массив PHP с переменной, которая не создает ключ

0

У меня есть функция, которая принимает массив как аргумент, а затем другую функцию, которая использует это. Во второй функции у меня есть массив, созданный с использованием переменной, но некоторые значения должны создавать пустой массив. Должен ли я добавить чек или есть значение, которое может идти внутри массива и НЕ делать ключ?

Например:

array()= no key made

array(null)= сделанный ключ 0 =>

array('')= сделанный ключ 0 =>

array(0)= сделанный ключ 0 => 0

Поэтому, если у меня есть массив, созданный как array($value). Есть ли способ иметь $value? Существует достаточно простой обходной путь с проверкой, но любопытство побудило меня спросить, возможно ли это.

  • 0
    это невозможно, каждый элемент имеет свой уникальный ключ
  • 0
    @Ghost Призрак, дело в том, что переменная не представляет элемент. Как стандартный пустой массив. Но похоже, что это невозможно. Тем не менее, я понимаю, что php объясняет создание ключа null, потому что иногда вы хотите, чтобы array (null) означала 0 => null.
Теги:
arrays
variables

3 ответа

1
Лучший ответ

Чтобы поддержать ответ @dave - взято из руководства PHP

    The key can either be an integer or a string. The value can be of any type.

    Additionally the following key casts will occur:


 -  Strings containing valid integers will be cast to the integer type. E.g. the key "8" will actually be stored under 8. On the other hand "08" will not be cast, as it isn't a valid decimal integer.

 -  Floats are also cast to integers, which means that the fractional part will be truncated. E.g. the key 8.7 will actually be stored under 8.

 -  Bools are cast to integers, too, i.e. the key true will actually be stored under 1 and the key false under 0.

 -  Null will be cast to the empty string, i.e. the key null will actually be stored under "".

 -  Arrays and objects can not be used as keys. Doing so will result in a warning: Illegal offset type.

Таким образом, независимо от того, какое значение вы передадите методу array(), оно будет сопоставляться с одним из этих типов, а не пустой массив будет создан с соответствующим значением.

  • 0
    Спасибо за ссылку.
1

Нет, нет - если вы передадите аргумент конструктору массива, массив будет содержать элемент.

0

Невозможно поместить что-то в массив и не иметь ничего в нем. Я не понимаю, что вы действительно пытаетесь сделать, но пустой массив просто

$emptyarray = array(); //Old
$emptyarray = []; //New

Также нет способа поместить что-то в массив без ключа. Если он находится в массиве, вы можете (ссылаться на него) как-нибудь.

  • 0
    Спасибо. Это связано со слиянием в первой функции. Массив объединен. Так что есть пустой ключ, когда его не должно быть. В некоторых случаях требуется пустое значение для ключа, тогда есть случаи, когда дополнительный ключ не требуется.
  • 0
    Пустой ключ невозможен. Возможно, вы имеете в виду пустую строку в качестве ключа, что на самом деле возможно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню