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

问题描述 投票:0回答:3

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

php arrays multidimensional-array random
3个回答
2
投票

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

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

4
投票

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

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

-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

© www.soinside.com 2019 - 2024. All rights reserved.