gpt4 book ai didi

php - 如何存储和重置 PHP 数组指针?

转载 作者:可可西里 更新时间:2023-10-31 22:08:43 25 4
gpt4 key购买 nike

我有一个关联数组,即

$primes = array(
2=>2,
3=>3,
5=>5,
7=>7,
11=>11,
13=>13,
17=>17,
// ...etc
);

那我做

// seek to first prime greater than 10000
reset($primes);
while(next($primes) < 10000) {}
prev($primes);

// iterate until target found
while($p = next($primes)) {
$res = doSomeCalculationsOn($p);

if( IsPrime($res) )
return $p;
}

问题是 IsPrime 也循环遍历 $primes 数组,

function IsPrime($num) {
global $primesto, $primes, $lastprime;

if ($primesto >= $num)
// using the assoc array lets me do this as a lookup
return isset($primes[$num]);

$root = (int) sqrt($num);
if ($primesto < $root)
CalcPrimesTo($root);

foreach($primes as $p) { // <- Danger, Will Robinson!
if( $num % $p == 0 )
return false;

if ($p >= $root)
break;
}

return true;
}

这会破坏我正在迭代的数组指针。

我希望能够在 IsPrime() 函数中保存和恢复数组的内部指针,这样它就不会产生这种副作用。有什么办法吗?

最佳答案

你可以“保存”数组的状态:

$state = key($array);

和“恢复”(不知道有没有更好的方法):

reset($array);

while(key($array) != $state)
next($array);

关于php - 如何存储和重置 PHP 数组指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/328384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com