考虑我的以下数组
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);