代码之家  ›  专栏  ›  技术社区  ›  mcgrailm

按索引访问关联数组项

  •  1
  • mcgrailm  · 技术社区  · 14 年前

    我想通过这样的索引访问关联数组中的信息

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

    但我什么也没从中得到。为什么?

    5 回复  |  直到 14 年前
        1
  •  4
  •   Alsciende    14 年前

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

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

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

    不,这意味着你可以同时使用数字和字符串标记,而不能使用其中一个或另一个来访问它们。记住,键是唯一的值标识符,如果允许使用数字或字符串,则不能使用它们在数组中的数字位置访问它们,请使用以下数组:

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

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

    我希望这是有道理的:p

        3
  •  2
  •   Mark Baker    14 年前
    $arr = Array( 
        ['mgm19'] => Array( 
            ['override'] => 1 
        ) 
    ); 
    
    $override1 = $arr['mgm19']['override']; 
    $arrkeys = array_keys($arr);
    $override2 = $arr[$arrkeys[0]]['override']; 
    
        4
  •  0
  •   David Yell    14 年前

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

        5
  •  0
  •   Joseph    14 年前

    不能使用数组中的数字位置访问关联数组。

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

    如果要检索数组中的特定元素,但不使用已定义的关联索引,请使用 current , prev , next , reset end 功能。