加入收藏 | 设为首页 | 会员中心 | 我要投稿 无锡站长网 (https://www.0510zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 数组指针 销毁,如何存储和重置PHP数组指针?

发布时间:2022-10-30 14:01:50 所属栏目:PHP教程 来源:网络
导读: 我有一个关联数组,即
$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 = 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数组php指针,

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) { //

if( $num % $p == 0 )

return false;

if ($p >= $root)

break;

}

return true;

}

它会破坏我正在迭代的数组指针.

我希望能够在IsPrime()函数中保存和恢复数组的内部指针,因此它没有这种副作用.有没有办法做到这一点?

解决方法:

不要依赖数组指针.请改用迭代器.

您可以使用以下代码替换外部代码:

foreach ($primes as $p) {

if ($p > 10000 && IsPrime(doSomeCalculationsOn($p))) {

return $p;

}

}

(编辑:无锡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!