如何获取关联数组的第 i 个元素?

How to get the i'th element of an associative array?

我有数组:

array(2=>'0',3=>'1',5=>'3',4=>'4',7=>'2')

注意:似乎没有什么是有序的。所以离开计划找数字订单。

如何固定此关联数组的第 i 个元素?

例如,当 i4 时,该值应为 4, 当 i1 时,值应为 0.

array_shift() 永远解决不了这个需求。很清楚循环的逻辑解决了这个问题

试试这个:

$arr1 = array(2=>'0',3=>'1',5=>'3',4=>'4',7=>'2');
$i=0;
$findIndex = 4;
$value = '';
foreach($arr1 AS $ele) {
    if ($findIndex == $i) {
        $value = $ele;
        break;
    }
    $i++;
}
echo $value ? $value : 'Not found';

这应该适合你:

在这里您可以使用 array_keys() 来访问作为数字索引数组的关联数组的键,然后您可以再次将其用作数组的键。

$arr = array(2=>'0',3=>'1',5=>'3',4=>'4',7=>'2');
echo $arr[array_keys($arr)[3]];
                         //^ This is your 'i'

输出:

4

when solution is a[i] <- 你不能这么简单,但你接近上面的解决方案。 (注意,由于带有键的数组是从 0 开始的索引,因此第 4 个元素是索引 3)

您可以使用一个变量然后减去一个,得到您的逻辑,即 4 => 4。

$i = 4;
$arr = array(2=>'0',3=>'1',5=>'3',4=>'4',7=>'2');
echo $arr[array_keys($arr)[$i-1]];

没有函数调用,也许更快

$arr = array(2=>'0',3=>'1',5=>'3',4=>'4',7=>'2');
$i = 4;
foreach($arr as $v) 
   if(!--$i) { echo $v; break; }