Php 数组中的条件\u reduce

Php 数组中的条件\u reduce,php,arrays,key,array-reduce,Php,Arrays,Key,Array Reduce,我想从下面的数组中生成条件,但它没有给出预期的结果,因为它没有运行第二个条件 $arr = [ [ 472 => [ 'EL' => 52.9, 'MT' => 57.375, 'MO' => 56.6, 'SC' => 26, 'ET' => 50.775 ]

我想从下面的数组中生成条件,但它没有给出预期的结果,因为它没有运行第二个条件

$arr = [
        [ 
        472 => [ 
            'EL' => 52.9, 
            'MT' => 57.375, 
            'MO' => 56.6, 
            'SC' => 26, 
            'ET' => 50.775 
            ] 
        ], [ 
        505 => [ 
            'EL' => 53.425, 
            'MT' => 25, 
            'MO' => 62.8, 
            'SC' => 23, 
            'ET' => 25
            ] 
        ]                
    ];

$total = array_reduce(
   $arr,
   function($arr, $key) {
     $id = key($key);
     $consumed = $key[$id];
     $sc = array_keys($consumed);
     $arr[$id] = [
       "totalc" => array_sum($consumed),
       "condition" => array_search('SC', $sc) ? min($consumed) >= 23:26
     ];
     return $arr;
   },
   []
 );
打印输出($total)包括以下内容:

Array
(
    [472] => Array
        (
            [totalc] => 243.65
            [condition] => 1
        )    
    [505] => Array
        (
            [totalc] => 189.225
            [condition] => 1
        )
    )
 Array
(
    [472] => Array
        (
            [totalc] => 243.65
            [condition] => 1
        )    
    [505] => Array
        (
            [totalc] => 189.225
            [condition] => 
        )
    )
我的预期输出如下:

Array
(
    [472] => Array
        (
            [totalc] => 243.65
            [condition] => 1
        )    
    [505] => Array
        (
            [totalc] => 189.225
            [condition] => 1
        )
    )
 Array
(
    [472] => Array
        (
            [totalc] => 243.65
            [condition] => 1
        )    
    [505] => Array
        (
            [totalc] => 189.225
            [condition] => 
        )
    )

你可以清楚地看到,我想检查:当它是'SC'时,我希望最低条件是23。但对于其他人,我希望最小值为26。因此,我使用array_search()在元素为“SC”时扫描数组。不幸的是,它只检查“SC”,而不检查其他。请帮助我。

如果我理解正确,您希望“SC”键的允许值最小为23,其余为26

请注意,行:
array\u search('SC',$SC)?最小($consumed)>=23:26
首先检查是否存在“SC”,并将整个数组的最小值设置为23或26

如果您想根据按键设置不同的最小值,我建议您:

function checkMin($arr, $min, $exception) {
    foreach($arr as $k => $v) {
        if ($v < (isset($exception[$k]) ? $exception[$k] : $min)) 
            return false;
    }
    return true;
}

希望有帮助

目前,您的代码与所写的完全相同——“SC”在两个数组中都存在,所以所有数组的最小值都是23。你希望它是26,除了23只适用于SC吗?@dWinder,你的答案仍然不起作用。请在下面查看我的评论。谢谢。它仍然不起作用。如果该键的最小值小于23,我想输出1,但另一个键的最小值是26。因此,如果'SC'=23,ET=26,它将输出1,因为它满足条件。但是SC=23,ET=25不符合条件,因为ET min必须是26。@LalhriatpuiiChhunthang我不明白-请检查实例-它与您的预期输出类似。你能详细说明我错过了什么吗?为什么?您的
'MT'=>25
小于26对于SC以外的键,最小值为26,如果ET或其他键排除(SC最小值为23)小于26,则条件必须为false。很高兴我能提供帮助!