3 回答
TA贡献1842条经验 获得超21个赞
对于前两个示例案例,您可以使用key()和current()分配所需的值。
$ar = $o->me; // reset isn't necessary, since you just created the array
$typ = key($ar);
$val = current($ar);
$out = array('me' => array(), 'mytype' => 2, '_php_class' => null);
$expected = [key($out), current($out)];
在这些情况下,您可以使用next()以后推进光标,但如果其余代码不依赖于此,则可能没有必要。
对于第三种情况,我建议只使用foreach()循环而$kv在循环内部分配。
foreach ($broken as $k => $v) {
$kv = [$k, $v];
}
对于第四种情况,看起来密钥被忽略list(),因此您可以分配当前值。
$this->result = current($this->cache_data);
与前两种情况一样,可能需要next()根据代码的其余部分如何与之交互来推进光标$this->cache_data。
第五个可以用for()循环代替。
reset($array);
for ($i = 0; $i < 30; $i++) {
$id = key($array);
$item = current($array);
// code
next($array);
}
TA贡献1856条经验 获得超17个赞
你可以each()使用key(),current()和next()创建自己的函数。然后用该函数替换你的调用,如下所示:
<?php
function myEach(&$arr) {
$key = key($arr);
$result = ($key === null) ? false : [$key, current($arr), 'key' => $key, 'value' => current($arr)];
next($arr);
return $result;
}
1。
$ar = $o->me;
reset($ar);
list($typ, $val) = myEach($ar);
2。
$out = array('me' => array(), 'mytype' => 2, '_php_class' => null);
$expected = myEach($out);
3。
for(reset($broken);$kv = myEach($broken);) {...}
TA贡献1794条经验 获得超7个赞
reset($array);
while (list($key, $value) = each($array)) {
UPDATE
reset($array);
foreach($array as $key => $value) {
- 3 回答
- 0 关注
- 594 浏览
添加回答
举报