从数组中按键选择多个随机值

时间:2018-01-03 20:49:38

标签: 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
    [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函数可以执行此类型的工作,或者如果我必须创建自己的函数,那么拥有我自己的函数插入数字会很好。感谢

3 个答案:

答案 0 :(得分:4)

您可以使用array_column仅获取ID并将其随机播放 然后使用array_slice获取五个项目并进行内爆。

$id = array_column($arr, "id");
Shuffle($id);
Echo implode(",", array_slice($id, 0, 5));

答案 1 :(得分:2)

首先通过id提取id列索引,然后选择5个随机索引,最后内嵌到逗号分隔列表中。由于密钥必须是唯一的,因此如果数组中出现重复项,则还具有不返回重复id的好处:

$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));
}

答案 2 :(得分:-1)

您可以这样继续(简短示例):

    <?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