获取数组中20%元素的方法-PHP
我有一个由n个元素组成的数组,我需要将其中20%的元素随机放入另一个数组中。有什么功能可以实现这一点吗 目前我能想到的是:获取数组中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
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));