Подтвердить что ты не робот

Массивы с 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?';

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

4b9b3361

Ответ 1

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

Null будет передан пустой строке, т.е. нулевой ключ на самом деле храниться под символом "".

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

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

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

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

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

Ответ 2

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

Ответ 3

Учитывая 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 (по умолчанию) в столбце базы данных foreignkey_id и 0 в строку с ключом 0.

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