简体   繁体   English

循环遍历数组并根据值将值分组为 4 个数组

[英]loop thru array and group values into 4 arrays based on the values

I need to group array results into 4 new arrays.我需要将数组结果分组为 4 个新数组。 Trying to group each result into the appropriate array like: top 25% mid-top 25% mid-low 25% low 25%尝试将每个结果分组到适当的数组中,例如: top 25% mid-top 25% mid-low 25% low 25%

THIS DOES NOT WORK but that's why I'm asking how to go about it.这行不通,但这就是为什么我要问如何去做。

$top = "70000";
$mid = "40000";
$low = "25000";

$resultsarray = array(100000,75000,55000,50000,20000,5000);
echo "Top 25%:";
   foreach ($resultsarray as $value) {
   if($value >= $top){
   echo $value;
   }
}

   echo "Mid Top 25%:";
   foreach ($resultsarray as $value) {
   if($value >= $mid && $value < $top){
   echo $value;
   }
}

and so on...等等...

array_filter will give you a smaller array based on the criteria you give. array_filter将根据您提供的标准为您提供一个较小的数组。

$top = "70000";
$mid = "40000";
$low = "25000";

$resultsArray = array(100000,75000,55000,50000,20000,5000);

$top25 = array_filter($resultsArray, function ($value) use ($top) {
    return $value >= $top;
});

$midTop25 = array_filter($resultsArray, function ($value) use ($top, $mid) {
    return $value >= $mid && $value < $top;
});

$midLow25 = array_filter($resultsArray, function ($value) use ($mid, $low) {
    return $value > $low && $value < $mid;
});

$low25 = array_filter($resultsArray, function ($value) use ($low) {
    return $value <= $low;
});

function printNums(array $arr)
{
    return array_reduce($arr, function ($carry, $number) {
        return $carry .= $number .= " ";
    });
}

printf("Top 25%%: %s\n", printNums($top25));
printf("Mid-Top 25%%: %s\n", printNums($midTop25));
printf("Mid-Low 25%%: %s\n", printNums($midLow25));
printf("Low 25%%: %s\n", printNums($low25));

See it in action at https://3v4l.org/mGMOVhttps://3v4l.org/mGMOV 上查看它的实际效果

Replace $numbers with $resultsarray .$resultsarray替换$numbers In your previous code, the $numbers array does not exist.在您之前的代码中, $numbers数组不存在。

Let me know if that fixed it for you.如果这为您解决了问题,请告诉我。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM