php - PHP - 使用特定值作为第一个数组值对合并和洗牌的数组进行排序
问题描述
我有 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);
推荐阅读
- c# - Firebase Javascript 发送多个端点
- django - 访问请求数据对象
- java - Redis 重启时自动将 Storm 拓扑重新连接到 Redis 集群
- php - PHP preg_replace 变量中的字符串
- javascript - 在 acrobat PDF 中分配 mouseUp 事件
- ruby-on-rails - 在适当的关联表上动态使用 Active Record 包含
- assembly - 像 byte_ 或 off_ 这样的前缀在十六进制值之前是什么意思?
- cordova - 使用 phonegap 应用程序上传图像
- html - 可以使用带有 itemprop="name" 属性的标签吗?
- javascript - 在按键 javascript 上调用 Enter 事件