在 PHP 中移动数组内部指针的最佳方法


Best way to move an internal pointer of array in PHP

考虑我的以下数组

for($i=0;$i<10;$i++) $arr2test['a'.sprintf('%s',$i)]='arr # '.($i+1);

现在,我可以按索引访问$arr 2test。就像,我可以回显$arr 2test['a3'] 来显示这个数组的第四个元素。

我的要求是获取此数组的第五个元素。让我们,我不知道第五元素的索引。我只知道第四个元素索引,即 a3

我知道我可以通过像下面的代码这样的 foreach 循环来做到这一点 -

$keyOfNextElement=null;
foreach($arr2test as $k=>$v){
    if(isset($a3Found)){
        $keyOfNextElement=$k;
        break;
    }
    if($k=='a3') $a3Found=true;
}
if(!is_null($keyOfNextElement)) echo arr2test[$keyOfNextElement];
else echo "Next element NOT found!!!";

请考虑一个包含大量数据的数组,例如数千个甚至更多数据。因此,在这种情况下,上述解决方案并不完美。特别是当我需要经常进行此类操作时。

另一个注意事项,我不知道它的第四或第五元素。我只知道索引"a3",我想要"a3"的下一个元素

您可以使用array_keys() .

$keys = array_keys($arr2test);
$index4 = array_search('a3', $keys);
$index5 = $keys[$index4+1];
$element5 = $arr2test[$index5];

使用 array_slice:

$a4 = array_slice($arr2test, 4, 1);

我认为这是获取第五个元素索引的更快方法

reset($arr2test);
for($j=1;$j<5;$j++){
    next($arr2test);
}
echo current($arr2test);