PHP. Возвращать случайные значения из массива, но не равно

У меня в массиве 6 значений, мне нужно вернуть 4 случайных значения из массива, но все не должно быть равным.

Пример:

Если у меня есть массив (6 значений) 1, 2, 3, 4, 5, 6 Мне нужно получить 4 случайных значения от него, например 3, 1, 4, 2, Сейчас вернемся к примеру: 2,2,3,2

Вот код:

$array= array(1, 2, 3, 4, 5, 6);
for ($i = 0; $i < 4; $i++) {
$k = array_rand($array);
$random_element = $array[$k];
echo $random_element;
}

0

Решение

Вы можете shuffle() массив, а затем array_slice() некоторые элементы из него:

shuffle($array);
$random_elements = array_slice($array, 0, 4); // with 4 the number of random values
5

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

Если вы хотите сохранить свою старую функциональность с echo просто вставьте unset в вашу петлю

$array= array(1, 2, 3, 4, 5, 6);
for ($i = 0; $i < 4; $i++) {
$k = array_rand($array);
$random_element = $array[$k];

unset($array[$k]);

echo $random_element;
}

Но мне больше нравится решение bwoebi.

0

$array= array(1, 2, 3, 4, 5, 6);
for ($i = 0; $i < 4; $i++) {
$k = array_rand($array);

$random_element = $array[$k];
unset($array[$k]);
echo $random_element;
}
  1. получить случайное значение из массива
  2. удалить элемент из массива, чтобы во время следующей итерации мы не получили повторяющийся элемент
0
По вопросам рекламы [email protected]