Здравствуйте, допустим есть константа-массив:
define('constant', array('one', 'two', 'three'));
Я пытаюсь сделать так:
shuffle(costant);
И получаю:
Fatal error: Only variables can be passed by reference
Неужели подобный массив не перемешать?
Задумайтесь о том, что пытаетсь сделать
Константа - это идентификатор (имя) для простого значения. Как следует из названия, их значение не может изменится в ходе выполнения скрипта
В принципе константа это и не переменная даже, которую нельзя изменить. Обычно в различных языках программирования значения констант подставляются в код на этапе его компиляции.
Изменение порядка ключей массива в принципе его меняет. Два массива считаются эквивалентными, когда
если $a и $b содержат одни и те же пары ключ/значение в том же самом порядке и того же типа.
Поэтому ошибку вы получаете закономерную
Fatal error: Only variables can be passed by reference
Если вы в процессе исполнения кода хотите изменить значение константы, то очевидно должны использовать не константу, а переменную.
Но при всем этом, мне кажется, что вам вполне достаточно будет создать копию этого массива, и работать уже с ней, при этом не трогая исходный массив
$data = constant;
shuffle($data);
таким образом и волки сыты, и овцы целы.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Привет! Есть массив УРЛов, который собирается из массивов поменьшеЕсли ссылки одинаковые, то они показываются как одна ссылка, т
Делаю ajax запрос при вводе символовВозвращаю строку в виде html и вставляю в таблицу
Как лучше вывести список на одной странице со следующей структурой: