Очень просто, но мне было интересно, почему это не работает.
Я пытаюсь перемешать массив и вывести результаты (в виде одной строки)
это мой код:
echo shuffle(array("A","B","C"))[0];
Небольшой твик нужен здесь;)
Ваша основная логика немного не так. Вас интересует только одно значение, я полагаю? Чтобы решить это с учетом этой логики, вы можете сделать это так:
echo array_rand(array_flip(['A', 'B', 'C']));
Попробуйте код ниже
$arr = array("A","B","C");
shuffle($arr);
echo $arr[0];
Я знаю, что это не лучшее решение для вас, но оно работает!
print_r( ( $b=array('A', 'B', 'C') ) && shuffle($b) ? next($b) : null );
Как это работает:
$b
$b
shuffle()
удалось:
shuffle()
не удалось:
null
Кто-то может подумать: «Почему он не использовал current()
работать?»
Ну, похоже, что функция shuffle
просто меняет порядок клавиш, но указатель всегда указывает на один и тот же элемент. Это означает, что current()
всегда вернется 'A'
,
По-видимому, это поведение изменилось в PHP 5.4, чтобы установить указатель на первый элемент.
ПОПРОБУЙТЕ ЭТУ ПРОСТУЮ ФУНКЦИЮ
$my_array = array("A","B","C","D","E");
shuffle($my_array);
print_r($my_array);
Вам нужно будет передать массив в отдельной переменной. Кроме того, сама функция shuffle () просто возвращает логическое значение, поэтому вам нужно вернуть элемент массива вместо вывода функции.
$ar = array("A","B","C");
shuffle($ar);
echo $ar[0];