Перемешивание массивов
У меня есть 5 массивов их нужно перемешать. Например
shuffle($arr1)
shuffle($arr2)
Как-то можно перемешать их в одном shuffle?
Так пробовал, но не работает.
$arr = [$arr1,$arr2,$arr3,$arr4,$arr5]
shuffle($arr)
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
Так у вас перемешаются, но не элементы внутри пяти массивов, а сами массивы внутри массива $arr.
Если вам нужно все-таки перемешать элементы внутри пяти массивов, то можно сделать это в цикле:
<?php
$arr1 = [1, 2, 3, 4, 5,];
$arr2 = [1, 2, 3, 4, 5,];
$arr3 = [1, 2, 3, 4, 5,];
$arr4 = [1, 2, 3, 4, 5,];
$arr5 = [1, 2, 3, 4, 5,];
$arrays = [&$arr1, &$arr2, &$arr3, &$arr4, &$arr5,];
foreach ($arrays as &$array) {
shuffle($array);
}
echo implode(", ", $arr1), "\n";
echo "...\n";
echo implode(", ", $arr5), "\n";
?>
2, 3, 4, 1, 5
...
2, 3, 1, 5, 4
Вариант 2 — напишите свою функцию, которая будет принимать несколько аргументов:
function multi_shuffle(&...$arrays) {
foreach ($arrays as &$array) {
shuffle($array);
}
}
$arr1 = [1, 2, 3, 4, 5,];
$arr2 = [1, 2, 3, 4, 5,];
$arr3 = [1, 2, 3, 4, 5,];
$arr4 = [1, 2, 3, 4, 5,];
$arr5 = [1, 2, 3, 4, 5,];
multi_shuffle($arr1, $arr2, $arr3, $arr4, $arr5,);
echo implode(", ", $arr1),"\n";
echo "...\n";
echo implode(", ", $arr5),"\n";
2, 5, 4, 1, 3
...
1, 3, 2, 5, 4