2010-06-29 5 views

ответ

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 */ 
    } 
+0

http://php.net/manual/en/language.types.array.php «индексированный и ассоциативный массив имеет одинаковый тип в PHP, который может содержать как целые и строковые индексы.» Возможно, я ошибаюсь, но разве это не значит, что он должен содержать числовой индекс? –

+0

ОК, так как я могу переопределить, если не mgm19 динамичен, и я не знаю, что это будет? – mcgrailm

+0

@DavidYell: нет, это означает, что индекс может быть 0 и может быть «mgm19». Здесь единственным индексом является «mgm19». @mcgrailm: см. Мой завершенный ответ – Alsciende

2

php.net/manual/en/language.types.array.php «Индексированные и ассоциативные типы массивов являются одним и тем же типом в PHP, которые могут содержать как целые, так и строковые индексы». Возможно, я ошибаюсь, но разве это не значит, что он должен содержать числовой индекс?

Нет, это говорит о том, что вы можете использовать как числовые, так и строковые знаки, а не то, что вы можете получить к ним доступ, используя тот или иной. Помните ключом является уникальным идентификатором значения, и если вы разрешили использовать номер или строку, которую вы не можете получить доступ к их, используя их числовые позиции в массиве, возьмите следующий массив:

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

Нам разрешено чтобы иметь смешанные типы данных в качестве ключа, и причина, по которой вы не можете получить доступ [mgm19] как [0], потому что это не его ключ.

Я надеюсь, что имело смысл: P

+0

Да, это так! Я тоже так думала, но не была уверена, когда прочитала инструкцию! –

0

Ассоциативные массивы не могут быть доступны с помощью цифровой позиции в массиве.

Технически все массивы на PHP одинаковы. Каждая позиция в массиве определяется либо численным значением, либо строкой, но не для обоих.

Если вы хотите получить конкретный элемент в массиве, но не использовать индекс ассоциативный вы определили, а затем использовать current, prev, next, reset и end функции.

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

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

Мне нравится это решение лучше – mcgrailm

Смежные вопросы