代码之家  ›  专栏  ›  技术社区  ›  The50

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

  •  2
  • The50  · 技术社区  · 6 年前

    我有一个n个元素的数组,我需要将其中20%随机地放入另一个数组中。有什么功能可以达到这个目的吗?

    目前我能想到的是:

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

    有没有更好的方法?

    4 回复  |  直到 6 年前
        1
  •  8
  •   Jerodev    6 年前

    你可以 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
  •  2
  •   Nick    6 年前

    最简单的解决方案可能是 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
    }
    
        3
  •  2
  •   splash58    6 年前

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

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

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

        4
  •  0
  •   Mohammed Salah    6 年前

    无序播放是这种情况下最简单的解决方案

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