Массивы с 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?';
Кто-нибудь нашел это полезным? Кажется, что-то приносит больше вреда, чем пользы.
Ответы
Ответ 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 здесь является авторитетным...