Перестановка однострочного массива PHP не работает

Очень просто, но мне было интересно, почему это не работает.

Я пытаюсь перемешать массив и вывести результаты (в виде одной строки)

это мой код:

echo shuffle(array("A","B","C"))[0];

Небольшой твик нужен здесь;)

1

Решение

Ваша основная логика немного не так. Вас интересует только одно значение, я полагаю? Чтобы решить это с учетом этой логики, вы можете сделать это так:

echo array_rand(array_flip(['A', 'B', 'C']));
2

Другие решения

Попробуйте код ниже

   $arr = array("A","B","C");
shuffle($arr);
echo $arr[0];
1

Я знаю, что это не лучшее решение для вас, но оно работает!

print_r( ( $b=array('A', 'B', 'C') ) && shuffle($b) ? next($b) : null );

Как это работает:

  • Присвойте массив переменной $b
  • Перемешать переменную $b
    • Если shuffle() удалось:
      • вернуть следующий элемент в массиве
    • Если shuffle() не удалось:
      • вернуть null

Кто-то может подумать: «Почему он не использовал current() работать?»

Ну, похоже, что функция shuffle просто меняет порядок клавиш, но указатель всегда указывает на один и тот же элемент. Это означает, что current() всегда вернется 'A',

По-видимому, это поведение изменилось в PHP 5.4, чтобы установить указатель на первый элемент.

1

ПОПРОБУЙТЕ ЭТУ ПРОСТУЮ ФУНКЦИЮ

$my_array = array("A","B","C","D","E");
shuffle($my_array);
print_r($my_array);
0

Вам нужно будет передать массив в отдельной переменной. Кроме того, сама функция shuffle () просто возвращает логическое значение, поэтому вам нужно вернуть элемент массива вместо вывода функции.

$ar = array("A","B","C");
shuffle($ar);
echo $ar[0];
0
По вопросам рекламы [email protected]