Массивы с NULL ключами

PHP мелочи здесь.

Если мы объявим массив следующим образом:

<?php $arr = [ 'foo' => 'bar', NULL => 'hello' ]; ?> 

Мы можем получить к нему доступ

 print $arr[NULL]; 

Это напечатает hello . Почему это полезно, актуально или необходимо? Это ошибка PHP или функция?

Моя единственная идея заключалась в том, что вы могли объявить массив с ключом NULL равным сообщению об ошибке, чтобы объяснить всем, кто использует ключ NULL, что их ключ равен null:

 $arr[NULL] = 'Warning you have used a null key, did you mean to?'; 

Кто-нибудь нашел это полезным? Кажется, это что-то, что приносит больше вреда, чем пользы.

Цитата из руководства :

Null будет передан в пустую строку, т. Е. Нулевой ключ будет фактически сохранен под "".

Дополнительные сведения о том, как используются клавиши, заключаются в следующем:

Ключ может быть целым числом или строкой. Значение может быть любого типа.

Кроме того, будут выполняться следующие нажатия клавиш:

  • Строки, содержащие действительные десятичные целые числа, если только номер не предшествует знаку +, будут отлиты от целочисленного типа. Например, ключ «8» будет фактически сохранен под 8. С другой стороны, «08» не будет выбрано, так как это не допустимое целое число.
  • Поплавки также отливаются от целых чисел, что означает, что дробная часть будет усечена. Например, ключ 8.7 будет фактически сохранен под 8.
  • Bools также отлиты от целых чисел, т. Е. Ключ true будет фактически сохранен под 1 и ключ false под 0.
  • Null будет передан в пустую строку, т. Е. Нулевой ключ будет фактически сохранен под "".
  • Массивы и объекты не могут использоваться в качестве ключей. Это приведет к предупреждению: тип недопустимого смещения.

Что касается этого быть полезным или необходимым, это спорно. Вас попросят использовать целые или строковые ключи, и вы были предупреждены о неявном ключевом литье.

Я нашел возможность использовать ключи Null при доступе к db, используя класс, который может использовать одно из значений столбца в качестве ключа к возвращенному массиву. Некоторые значения столбцов могут быть нулевыми.

Учитывая API формы, заполненный ассоциативным массивом php, я нашел полезным использовать значение с нулевым ключом, чтобы указать значение NULL в базе данных. Например:

 $this->addElement('select', 'foreignkey_id', array( 'label'=>'Add a Poll', 'multiOptions' => array( null => 'No value selected', '0' => 'Element with ID0 selected' ) )); 

В этом случае null отображает значение NULL (по умолчанию) в столбце базы данных foreignkey_id и 0 в строку с ключом 0.

Тем не менее, вне этой конкретной статьи, я склонен думать, что комментарий DCoder является авторитетным здесь …