Массивы с нулевыми ключами
PHP мелочи здесь.
Если мы объявим массив следующим образом:
<?php $arr = [ 'foo' => 'bar', NULL => 'hello' ]; ?>
Мы можем получить к нему доступ Вот так
print $arr[NULL];
Это выведет hello
. Почему это полезно, уместно или необходимо? Это ошибка PHP или функция?
Моя единственная идея состояла в том, что вы можете объявить массив с нулевым ключом, равным сообщению об ошибке, чтобы объяснить любому, кто использует нулевой ключ, что их ключ равен нулю:
$arr[NULL] = 'Warning you have used a null key, did you mean to?';
Нашел ли кто-нибудь это полезным? Кажется, что-то может причинить больше вреда, чем хороший.
3 ответа:
Цитата из руководства:
Null будет приведено к пустой строке, то есть ключ null будет фактически храниться в разделе "".
Дополнительные сведения о приведении ключей следующие:
Ключ может быть целым числом или строкой. Ценность может быть любой тип.
Кроме того, произойдут следующие приведения ключей:
- строки, содержащие допустимые десятичные целые числа, если перед числом не стоит знак + , будет приведен к целочисленному типу. Например, ключ "8" на самом деле будет храниться под 8. С другой стороны "08" не будет приведите, так как это не допустимое десятичное целое число.
Поплавки также приводятся к целым числам, что означает, что дробная часть будет усечена. Например, ключ 8.7 будет фактически храниться под 8.- Bools также приводятся к целым числам, то есть ключ true будет фактически сохранен под 1, а ключ false-под 0.
- Null будет приведено к пустой строке, т. е. ключевое значение null на самом деле будет храниться в разделе "".
Массивы и объекты не могут использоваться в качестве ключей. Это приведет к появлению предупреждения: недопустимый тип смещения.Что касается полезности или необходимости этого, то это спорно. Вас попросят использовать целочисленные или строковые ключи, и вы будете предупреждены о неявном приведении ключей.
Я нашел возможность иметь нулевые ключи полезными при обращении к БД, используя класс,который может использовать одно из значений столбца в качестве ключа к возвращаемому массиву. Некоторые значения столбцов могут иметь значение null.
Учитывая API формы, заполненный ассоциативным массивом php, я счел полезным использовать значение с нулевым ключом для указания нулевого значения в базе данных. Например:
$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.
Вне этой конкретной usecase, однако, я склонен думать, что комментарий DCoder является авторитетным здесь...