按索引访问关联数组项

时间:2010-06-29 14:37:08

标签: php arrays associative-array

我想通过索引来访问关联数组中的信息,如此

$arr = Array(
    ['mgm19'] => Array(
        ['override'] => 1
    )
);

$override1 = $arr['mgm19']['override'];
$override2 = $arr[0]['override'];

但是我从override2中得不到什么为什么?

5 个答案:

答案 0 :(得分:4)

因为$arr只有一个索引mgm19。索引0没有任何关联。如果您不知道索引或不想使用它,请使用foreach

  foreach($arr as $value) {
     echo $value['override'];
     break; /* breaking so that we only read the first value of the array */
  }

答案 1 :(得分:2)

  

php.net/manual/en/language.types.array.php“索引和关联数组类型在PHP中是相同的类型,它们都可以包含整数和字符串索引。”我可能错了,但这是否意味着它应该已经包含数字索引?

不,它说你可以使用数字和字符串标记,而不是你可以使用其中一个来访问它们。请记住,键是唯一的值标识符,如果您允许使用数字或字符串,则无法使用数组中的数字位置访问它们,请使用以下数组:

$arr = Array(
   [mgm19] => Array(
    [override] => 1
   ),
   [0] => Array(
    [override] => 1
   )
);

我们允许将混合数据类型作为键,并且您无法访问[mgm19]作为[0]的原因是因为这不是它的关键。

我希望这是有道理的:P

答案 2 :(得分:2)

$arr = Array( 
    ['mgm19'] => Array( 
        ['override'] => 1 
    ) 
); 

$override1 = $arr['mgm19']['override']; 
$arrkeys = array_keys($arr);
$override2 = $arr[$arrkeys[0]]['override']; 

答案 3 :(得分:0)

我想看看这个函数,http://www.php.net/manual/en/function.array-values.php看起来可能有帮助:)

答案 4 :(得分:0)

无法使用数组中的数字位置访问关联数组。

从技术上讲,PHP中的所有数组都是相同的。数组中的每个位置都使用数值或字符串定义,但不能同时定义。

如果要检索数组中的特定元素,但不使用已定义的关联索引,请使用currentprevnext,{{3} }和reset函数。