PHP, как в array добавить null?

159
18 июля 2018, 15:10

Как можно добавить в array null-значение? Array_push ругается:

Warning: array_push() expects parameter 1 to be array, null given in C:\wamp64\www\Retrofit\includes\DbOperation.php on line

Код

$array_sensor_light = array();
while($stmt->fetch()){ 
...
    array_push($array_sensor_light, $sensor_light);
...
}
$parameters = array();
....
$array_sensor_light = array_unique($array_sensor_light); 
...
parameters['sensor_light'] = array_sensor_light;
...
return parameters;
Answer 1

Посмотрите более детально на ваше предупреждение (не ошибка, а предупреждение):

Warning: array_push() expects parameter 1 to be array, null given in C:\wamp64\www\Retrofit\includes\DbOperation.php on line...

Переведем на русский язык текст предупреждения:

Предупреждение: array_push() ожидает, что параметр 1 будет массивом, null указан в C:\wamp64\www\Retrofit\includes\DbOperation.php в строке...

Откроем документацию по методу array_push: добавляет один или несколько элементов в конец массива. Обрабатывает массив как стек и помещает переданные переменные в конец массива. Длина массива увеличивается на количество переданных переменных. Входные параметры

  1. Входной массив
  2. Значения, которые нужно добавить в конец массива

Исходя из сообщения, указанного в предупреждении можно прийти к выводу, что первый параметр, массив, в который вы хотите добавить значения - имеет значение null.

Также, в качестве совета, не рекомендуется использовать метод array_push(), если вы не используете результат выполнения операции добавления. Связано это с тем, что метод работает медленнее, чем стандартная конструкция добавления в конец массива. Для примера, чтобы добавить в конец массива значение, достаточно написать следующий код:

$array_sensor_light[] = $sensor_light;

Такое добавление в конец массива работает гораздо быстрее, чем array_push(). Прочитав документацию чуть более детально, можно найти следующее:

Note: array_push() will raise a warning if the first argument is not an array. This differs from the $var[] behaviour where a new array is created.

Что в свою очередь говорит нам о том, что array_push() вызовет предупреждение, если первый аргумент не является массивом. Это отличается от поведения $var[], когда создается новый массив. То есть массив не был инициализирован при вызове array_push() метода.

Другими словами, значение null вы можете поместить в массив, просто нужно знать некоторые тонкости при использовании метода array_push().

Полезные ссылки для ознакомления и изучения:

  • Документация PHP: метод array_push
  • PHP array_push adding null instead of integer
  • array_push() expects parameter 1 to be array, null given in
READ ALSO
Как с генерировать csrf токен, используя HTML meta tag?

Как с генерировать csrf токен, используя HTML meta tag?

Нужно с генерировать csrf токен для POST запроса ,

182
Подстановка в custom при генерации страницы в DLE

Подстановка в custom при генерации страницы в DLE

Как вывести, по возможности без дополнительных модулей, краткие новости с номерами получаемыми PHP скриптом в момент генерации страницы

180
PHP аналог array_unique без ключей

PHP аналог array_unique без ключей

Имеется ли аналог этой команды, чтобы определялись уникальные слова, без указания ключа первого вхождения? Может у этой команды есть какой-нибудь...

196
Вывести значение в необходимом формате php

Вывести значение в необходимом формате php

Есть значение в БД номера телефона в формате 380501234567 Требуется вывести это значение на экран в формате (050) 123-45-67

206