在没有循环的情况下按位置获取关联数组的特定元素

时间:2015-10-21 08:02:28

标签: php arrays associative-array

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

我知道我可以和计数器一起进行for / foreach循环,但我只是很好奇。

PS:我已经找到了this example,但我期待一些来自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:我也发现this answer,但是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)

例如:array(1 => false,2 => false,3 => true)...

1 个答案:

答案 0 :(得分:1)

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
)