如何通过最小/最大值过滤php数组

时间:2018-12-11 06:54:47

标签: php arrays wordpress

我有一系列用户数据,其中包括服务成本

cellForRow

67-这是用户ID

我如何获得具有最小值和最大值以及像1800-3200这样的回声的新数组

如果仅指定一个值或min = max,则应显示一个值

谢谢)

4 个答案:

答案 0 :(得分:2)

您可以遍历一系列服务成本以制作一系列新的正义成本。然后,很容易找到最小值/最大值。

类似的事情应该起作用:

(~a | r)

答案 1 :(得分:1)

尝试一下

$val = array('cost_service_1'=>array('2500'),
            'cost_service_2'=>array('500'),
            'cost_service_3'=>array('1500'));

$total = array();
foreach($val as $value){
    array_push($total,$value[0]);
}
if(min($total) == max($total))
    echo max($total);
else
    echo min($total).'-'.max($total);

答案 2 :(得分:1)

或者参考这个。

//initialize your $costs array variable
$costs =[];
//say this is your data structure
$data = [
    "cost_service_1"=>[2500],
    "cost_service_2"=>[3200],
    "cost_service_3"=>[2000],
    "cost_service_4"=>[4800]
];
//var_dump($data);
foreach ($data as $cost_service) {
    //merge the current $cost_service to existing $cost using array_merge
    /**
     * @see http://php.net/manual/en/function.array-merge.php
     */
    $costs = array_merge($costs, $cost_service); 
}
//get the min and max
$min = min($costs);
$max = max($costs);
//display the min
//echo 'min:'. $min ."\n";
//display the max
//echo 'max:'. $max ."\n";
echo $min==$max?$min:$min.'-'.$max;

答案 3 :(得分:1)

使用array_column()array_unique()max()min()

Array_column隔离数组的一列,在这种情况下,我们需要索引0,因为那是开销所在。

Array_unique确保仅返回每个成本中的一个,因此,如果$ costs中有多个值,则存在一个范围;如果只有一个值,则它要么是$ data中的一个值,要么全部相等。

$data = [
    "cost_service_1"=>[2500],
    "cost_service_2"=>[3200],
    "cost_service_3"=>[2000],
    "cost_service_4"=>[4800]
];

$costs = array_unique(array_column($data, 0));
if(count($costs)>1){
    echo "Max cost " . max($costs) . "\nMin cost ". min($costs);
}else{
    echo "Cost " . $costs[0];
}
//Max cost 4800
//Min cost 2000

https://3v4l.org/ZNn2V