拜托,我需要一些帮助。我有下面给出的数组,我想从中返回随机元素。
$data = array('Computer', 'Laptop', 'Mouse', 'Keyboard');
$rand = rand(0,count($data)-1);
echo $data[$rand];
上面的代码按预期工作。但是,我不希望能够从返回的列表中排除特定元素,如下所示:
$exclude = "Mouse";
$data = array('Computer', 'Laptop', 'Mouse', 'Keyboard');
$rand = rand(0,count($data)-1);
echo $data[$rand];
预期的结果是,在这种情况下 $exclude "Mouse"
中指定的元素将不会作为随机元素之一返回。
也许鼠标元素将首先从数组中删除,如下所示,然后返回一个随机元素:
$data = array('Computer', 'Laptop', 'Keyboard');
最佳答案
您可以使用array_diff从 $data
中删除 $exclude
中的值。
$exclude = array('Mouse');
$data = array('Computer', 'Laptop', 'Mouse', 'Keyboard');
$excluded_data = array_values(array_diff($data, $exclude));
$rand = rand(0,count($excluded_data)-1);
echo $excluded_data[$rand];
此代码从 $data
中删除 Mouse
,然后从新数组中获取随机值。随机数据的数组将像您所描述的那样:
$data = array('Computer', 'Laptop', 'Keyboard');
关于php - 如何从php数组中检索不包括特定元素的随机元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33097557/