我想从数组中选择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
[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_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));
}
您可以使用array_column仅获取ID并对其进行随机播放。 然后使用array_slice获取五个项目并进行内爆。
$id = array_column($arr, "id");
Shuffle($id);
Echo implode(",", array_slice($id, 0, 5));
您可以这样继续(简短示例):
<?php
$items = array(
array("id" => 43, "pets" =>2),
array("id" => 40, "pets" =>8),
array("id" => 24, "pets" =>0),
array("id" => 23, "pets" =>4),
);
$ids = $items[array_rand($items)]["id"].",".$items[array_rand($items)]["id"].",".$items[array_rand($items)]["id"];
echo $ids;
// Output Example : 24, 40, 23
?>
它将从主数组中选择一个随机键($ items),例如:3,并输出“id”:
$items[3]["id"]
对于这个例子。
这是一个演示:http://sandbox.onlinephpfunctions.com/code/32787091e341cdf8e172d96b065b14b3ca834846