随机化数组中的一些元素

Hi I have a set or array:

$arr = ['1','2','3','4','5','6','7','8','9','0'];
shuffle($arr);

this will return the randomized order of the array. but how can I code if the '3','4' and '8','9','0' must together? I mean the other value can go random order but these '3','4' and '8','9','0' must join together.

Another way would be to get those ordered elements first (another copy), then shuffle the original, then remerge them again with union:

$arr = ['1','2','3','4','5','6','7','8','9','0'];
$arr2 = array_filter($arr, function($e){ // get those elements you want preversed
    return in_array($e, [3, 4, 8, 9, 0]);
});
shuffle($arr); // shuffle the original
$ordered = $arr2 + $arr; // use union instead of array merge
ksort($ordered); // sort it by key

print_r($ordered);

Sample Output

Many possible solutions, one example

<?php
$arr = ['1','2',['3','4'],'5','6','7',['8','9','0']];
shuffle($arr);
// and then flatten the array  ..somehow, e.g.
array_walk_recursive($arr, function($e) { echo $e, ' '; });