PHP - 以特定值作为第一个数组值对合并和打乱的数组进行排序

PHP - Sort the merged & shuffled array with specific value as first array value

我有 3 个 nested arrays,我用 array_merge 合并它们,并用 shuffle 打乱它们。

这些是我的数组:

$array_1 = [
    ['product_1_1', 300, 100],
    ['product_1_2', 300, 100],
    ['product_1_3', 300, 100],
    ['product_1_4', 300, 100],
    ['product_1_5', 300, 100],
];

$array_2 = [
    ['product_2_1', 300, 250],
    ['product_2_2', 300, 250],
    ['product_2_3', 300, 250],
    ['product_2_4', 300, 250],
    ['product_2_5', 300, 250],
];

$array_3 = [
    ['product_3_1', 300, 500],
    ['product_3_2', 300, 500],
    ['product_3_3', 300, 500],
    ['product_3_4', 300, 500],
    ['product_3_5', 300, 500],
];

我想要实现的是在shuffle完成后,总是首先将其中一个值放在$array_1中,这样随机排列的数组始终以 $array_1.

中的值之一开头

这是一种方法。从 array_1 中选择一个随机索引并从数组中删除该元素。然后组合所有,合并和洗牌,以 array_unshift 结尾,这将在最终数组前面加上我们的随机 array_1 值。

<?php

$array_1 = [
    ['product_1_1', 300, 100],
    ['product_1_2', 300, 100],
    ['product_1_3', 300, 100],
    ['product_1_4', 300, 100],
    ['product_1_5', 300, 100],
];

$array_2 = [
    ['product_2_1', 300, 250],
    ['product_2_2', 300, 250],
    ['product_2_3', 300, 250],
    ['product_2_4', 300, 250],
    ['product_2_5', 300, 250],
];

$array_3 = [
    ['product_3_1', 300, 500],
    ['product_3_2', 300, 500],
    ['product_3_3', 300, 500],
    ['product_3_4', 300, 500],
    ['product_3_5', 300, 500],
];

$first = rand(0, floor(count($array_1))); 
$firstItem = $array_1[$first];
unset($array_1[$first]);
 
$merged = array_merge($array_1, $array_2, $array_3);
shuffle($merged);
array_unshift($merged, $firstItem);