Php 从数组中按键选择多个随机值
我想从数组中选择5个随机ID。这是我的数组Php 从数组中按键选择多个随机值,php,arrays,multidimensional-array,random,Php,Arrays,Multidimensional Array,Random,我想从数组中选择5个随机ID。这是我的数组$test: Array ( [id] => 13 [pets] => 8 ) Array ( [id] => 15 [pets] => 8 ) Array ( [id] => 16 [pets] => 10 ) Array ( [id] => 17 [pets] => 9 ) Array ( [id] => 18 [pe
$test
:
Array
(
[id] => 13
[pets] => 8
)
Array
(
[id] => 15
[pets] => 8
)
Array
(
[id] => 16
[pets] => 10
)
Array
(
[id] => 17
[pets] => 9
)
Array
(
[id] => 18
[pets] => 10
)
Array
(
[id] => 19
[pets] => 10
)
Array
(
[id] => 20
[pets] => 0
)
Array
(
[id] => 21
[pets] => 8
)
Array
(
[id] => 22
[pets] => 9
)
Array
(
[id] => 23
[pets] => 4
)
Array
(
[id] => 24
[pets] => 0
)
Array
(
[id] => 40
[pets] => 8
)
Array
(
[id] => 43
[pets] => 2
)
如何从数组中选择5个随机ID并将其放入如下字符串中:
$ids = '13,17,18,21,43';
我曾尝试使用
array\u rand
,但它似乎不适合我的数组类型。我不确定是否有其他内置PHP函数可以完成这类工作,或者如果我必须创建自己的函数,最好有自己的函数来插入数字。谢谢首先通过id
提取id
列索引,然后随机选取5个,最后内爆为逗号分隔的列表。由于键必须是唯一的,因此如果数组中碰巧存在重复项,则不会返回重复的id
s:
$ids = implode(',', array_rand(array_column($test, 'id', 'id'), 5));
对于函数:
function array_rand_multi($array, $key, $num) {
return implode(',', array_rand(array_column($array, $key, $key), $num));
}
首先通过
id
提取id
列索引,然后随机选取5个,最后内爆为逗号分隔的列表。由于键必须是唯一的,因此如果数组中碰巧存在重复项,则不会返回重复的id
s:
$ids = implode(',', array_rand(array_column($test, 'id', 'id'), 5));
对于函数:
function array_rand_multi($array, $key, $num) {
return implode(',', array_rand(array_column($array, $key, $key), $num));
}
您可以使用array_列仅获取ID并将其洗牌。
然后使用array_slice获取五个项目并内爆
$id = array_column($arr, "id");
Shuffle($id);
Echo implode(",", array_slice($id, 0, 5));
您可以使用array_列仅获取ID并将其洗牌。
然后使用array_slice获取五个项目并内爆
$id = array_column($arr, "id");
Shuffle($id);
Echo implode(",", array_slice($id, 0, 5));
您可以这样进行(简短示例):
对于这个例子
下面是一个演示:您可以这样继续(简短示例):
对于这个例子
下面是一个演示:array\u rand返回键您确定不需要在array\u切片中使用
0,5
@是的,我忘了在id
@Andreas上建立索引:我没有使用array\u slice
只是忘记了array\u列中的参数。对不起,我不知道我怎么会读到这个。我能把它归咎于疲劳和轻度流感吗?:-)array\u rand返回键您确定不需要在array\u切片中使用0,5
@是的,我忘了在id
@Andreas上建立索引:我没有使用array\u slice
只是忘记了array\u列中的参数。对不起,我不知道我怎么会读到这个。我能把它归咎于疲劳和轻度流感吗?:-)这有一个缺陷,因为您必须使用array_rand五次,这意味着可能存在重复项@安德烈亚斯在最初的问题中没有提到。你确定它是必要的吗?你是正确的,它没有在问题中说,但它说的是“5个随机ID”,并且示例显示没有重复。但你是对的,它没有列为一项要求。我没有对你的记录投反对票。这有一个缺陷,因为你必须使用array_rand五次,这意味着可能会有重复@安德烈亚斯在最初的问题中没有提到。你确定它是必要的吗?你是正确的,它没有在问题中说,但它说的是“5个随机ID”,并且示例显示没有重复。但你是对的,它没有列为一项要求。我没有因为你的记录而否决你。