根据位置获取关联数组的特定元素,不需要循环


Get specific element of associative array by position without loop

是否有任何函数可以返回,例如,关联数组的第三个元素而不需要任何循环?(并且不复制数组)

我知道我可以做一个for/foreach循环和一个计数器,但我只是好奇。


PS:我已经找到了这个例子,但我期待的东西从php会做一些像getAssociativeDataByIndex($array, $index)例如。

编辑:本帖内容:

function getAtPos($tmpArray,$pos) {
 return array_splice($tmpArray,$pos-1,1);
}
$array = array('Alpha' => 1.1,'Bravo' => 2.2,'Charlie' => 3.3,'Delta' => 4.4,'Echo' =>5.5, 'Golf' => 6.6);    
$pos = 3;
$return = getAtPos($array,$pos);    
var_dump($return); // 3.3

PS2:我也找到了这个答案,但是ArrayIterator类和seek方法没有(很好)记录,所以我不知道这是否会创建数组的副本(如果是这样,我认为这并不有趣)

编辑:本帖内容:

$keys = array_keys($array);
echo $array[$keys[$position]];
OR 
The ArrayIterator class can also do this for you:
$iterator = new ArrayIterator($array);
$iterator->seek($position);

数组示例:

$a = array('jean' => 3, 'simon' => 2, 'alex' => 5, 'derek' => 4);

用例示例:你有一个外部库它接受一个数组作为参数,处理它并返回一个数组比如index=>boolean(或index=>data)

。:数组(1 =>假,2 => false, 3 => true)…

array_values()基本上会将关联数组转换为数字数组,同时保持顺序:

<?php
$a = array('jean' => 3, 'simon' => 2, 'alex' => 5, 'derek' => 4);
$values = array_values($a);
print_r($values);
?>
结果:

Array
(
    [0] => 3
    [1] => 2
    [2] => 5
    [3] => 4
)