PHP не понятное поведение array unshift / array filter

215
16 января 2018, 14:04

Здравствуйте, мне нужно удалить пустые элементы массива, и добавить один элемент в начало. Я могу сделать это так:

$users = array_filter($users);
array_unshift($users, 'userid');

Но я привык сокращать код, по этому пытаюсь сделать это так:

array_unshift(array_filter($users), 'userid');

Но тогда почему то массив получается вовсе пустым. Почему? Ведь интерпретатор по идее должен вначале очистить пустые элементы при помощи array_filter, а потом уже в пустой массив добавлять значение в его начало.

Answer 1

Но тогда почему то массив получается вовсе пустым. Почему?

Потому что функция array_unshift() принимает значение переменной по ссылке &:

int array_unshift ( array &$array , mixed $value1 [, mixed $... ] )

Сохраняйте массив в переменную, и передавайте на вход эту переменную, а не результат вычисления какого либо выражения. Такое поведение касается всех php-функций, принимающих параметры по ссылке.

READ ALSO
Настройка чпу на сайте

Настройка чпу на сайте

Здравствуйте! Пытаюсь настроить чпу на сайте (первый раз), для этого создал файлhtaccess в корне

210
Редактирование таблицы как в PhpMyAdmin [требует правки]

Редактирование таблицы как в PhpMyAdmin [требует правки]

В PhpMyAdmin можно релактировать данные кликнув дважды на ячейкеВозможно ли сделать такою же систему со своими таблицами и базо данных?

269
Почему неверно срабатывает валидатор?

Почему неверно срабатывает валидатор?

Есть страница регистрации:

276
Регулярное выражение для валидации textarea

Регулярное выражение для валидации textarea

Здравствуйте, уважаемые товарищи!

229