获取数组中20%元素的方法-PHP

获取数组中20%元素的方法-PHP,php,arrays,random,Php,Arrays,Random,我有一个由n个元素组成的数组,我需要将其中20%的元素随机放入另一个数组中。有什么功能可以实现这一点吗 目前我能想到的是: foreach ($orders as $order) { if (rand(1, 100) > 80) { echo('20%'); } else { echo('80%'); } } 还有更好的方法吗?您可以选择阵列,然后选择前20%的元素 $array = [1, 2, 3, 4]; shuffle($a

我有一个由n个元素组成的数组,我需要将其中20%的元素随机放入另一个数组中。有什么功能可以实现这一点吗

目前我能想到的是:

foreach ($orders as $order) {
    if (rand(1, 100) > 80) {
        echo('20%');
    } else {
        echo('80%');
    }
}
还有更好的方法吗?

您可以选择阵列,然后选择前20%的元素

$array = [1, 2, 3, 4];
shuffle($array);    

$twenty = array_slice($array, 0, floor(count($array) / 5));
$eighty = array_slice($array, floor(count($array) / 5));

最简单的解决方案可能是使用:

shuffle($orders);
对于($i=0;$i
对于这种情况,洗牌是最简单的解决方案

$array = [1,2,3,4]
shuffle($array);
$firstSlice = array_slice($array , 0 , count($array)/2);
$secondSlice = array_slice($array , count($array)/2 , count($array));

要通过一个函数调用获得两个数组,请使用array\u splice函数。之后

shuffle($array);
$twenty = array_splice($array, floor(count($array) / 5 * 4));

$20将持有源数组的1/5和$array-其他项目

@50这将不会获得20%的数组元素,有时可能会得到更多或更少。您只是随机获得一个数字,而不是随机元素的20%。不在bulit函数中,但可以使用
count()
floor()
range()
和loop轻松完成。您是否必须获得一半?请注意,在您的示例中,您通过统计得到20%,而不是
n/5
是的,这就解决了问题,但是如何保存遗漏的其他80%的元素?我也需要它们,作为另一个数组。您可以再次使用array\u slice对数组的另一部分进行切片。如果使用
array\u splice()
,则不必进行两次切片。
shuffle($array);
$twenty = array_splice($array, floor(count($array) / 5 * 4));