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

我有一个n个元素的数组,我需要将这些元素中的20%随机地添加到另一个数组中 . 有没有可以实现这个目标的功能?

目前我能想到的是:

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

有更优化的方式吗?

回答(4)

2 years ago

要通过一个函数调用获取两个数组,请使用array_splice函数 . 后

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

二十美元将持有1/5的源阵列和$ array - 其他项目

2 years ago

你可以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));

2 years ago

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

2 years ago

最简单的解决方案可能是使用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
}