PHP shuffle константу-массив

196
31 марта 2018, 17:30

Здравствуйте, допустим есть константа-массив:

define('constant', array('one', 'two', 'three'));

Я пытаюсь сделать так:

shuffle(costant);

И получаю:

Fatal error: Only variables can be passed by reference

Неужели подобный массив не перемешать?

Answer 1

Задумайтесь о том, что пытаетсь сделать

Константа - это идентификатор (имя) для простого значения. Как следует из названия, их значение не может изменится в ходе выполнения скрипта

В принципе константа это и не переменная даже, которую нельзя изменить. Обычно в различных языках программирования значения констант подставляются в код на этапе его компиляции.

Изменение порядка ключей массива в принципе его меняет. Два массива считаются эквивалентными, когда

если $a и $b содержат одни и те же пары ключ/значение в том же самом порядке и того же типа.

Поэтому ошибку вы получаете закономерную

Fatal error: Only variables can be passed by reference

Если вы в процессе исполнения кода хотите изменить значение константы, то очевидно должны использовать не константу, а переменную.

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

$data = constant;
shuffle($data);

таким образом и волки сыты, и овцы целы.

READ ALSO
Как пометить значения в массиве PHP?

Как пометить значения в массиве PHP?

Привет! Есть массив УРЛов, который собирается из массивов поменьшеЕсли ссылки одинаковые, то они показываются как одна ссылка, т

245
Jquery изменить paginator в laravel

Jquery изменить paginator в laravel

Делаю ajax запрос при вводе символовВозвращаю строку в виде html и вставляю в таблицу

215
Как вывести список категорий вместе с подкатегориями и постами в WP?

Как вывести список категорий вместе с подкатегориями и постами в WP?

Как лучше вывести список на одной странице со следующей структурой:

194