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



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

目前我能想到的是:

foreach ($orders as $order) {
if (rand(1, 100) > 80) {
echo('20%');
} else {
echo('80%');
}
}

有没有更好的方法?

您可以shuffle数组,然后获取前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:

shuffle($orders);
for ($i = 0; $i < count($orders) / 5; $i++) {
// do something with the first 20% of elements
}
for (; $i < count($orders); $i++) {
// do something with the rest of the array
}

要通过一个函数调用获得两个数组,请使用array_splice函数。之后

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

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

Shuffle是这种情况下最简单的解决方案

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

最新更新