Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php数组中的多个条件_Php_Arrays_Filter_Conditional Statements - Fatal编程技术网

php数组中的多个条件

php数组中的多个条件,php,arrays,filter,conditional-statements,Php,Arrays,Filter,Conditional Statements,我如何检查php数组中具有多个条件的最小值。我的数组如下: $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 = arra

我如何检查php数组中具有多个条件的最小值。我的数组如下:

$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:min($consumed) >=26
     ];
     return $arr;
   },
   []
 );
如果键为“SC”,则“SC”的最小值为23,但对于其他键的值,最小值为26。因此,上述代码必须产生以下输出:

 Array
(
    [472] => Array
        (
            [totalc] => 243.65
            [condition] => 1
        )    
    [505] => Array
        (
            [totalc] => 189.225
            [condition] => 
        )
    )
数组([472]和[505])中的
SC
键都满足最小条件23,但键
ET
的值不满足最小条件26。因此,数组[505]应该在
条件
键的值上生成
false
。但是如果我们在[505]数组中将
ET
的值更改为26或更多,我们仍然会得到
false
值。但是正确的值必须是
1
true
。因此,如果数组如下所示:

$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' => 26]]];
正确的输出是:

Array
    (
        [472] => Array
            (
                [totalc] => 243.65
                [condition] => 1
            )    
        [505] => Array
            (
                [totalc] => 189.225
                [condition] => 1
            )
        )
简而言之,“SC”的最小值应为23,其他键(EL、MT、MO、ET)的mim值应为26。我花了将近两天两夜的时间试图解决这个问题,但仍然不起作用。如果你能帮我,我会非常感激。谢谢

$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' => 26]]];
function pr($arr)
{
    echo "<pre>";
    print_r($arr);
    echo "</pre>";
}

$total = array_reduce($arr, function ($arr, $key) {
    $id   = key($key);
    $temp = $consumed = $key[$id];
    $sc   = array_keys($consumed);
    $condition = false;
    if (array_search('SC', $sc) && ($consumed['SC']) >= 23) {
        $condition = true;
    }
    unset($temp['SC']);

    $condition = ($condition && min($temp) >= 26 ? true : false);
    $arr[$id] = [
        "totalc"    => array_sum($consumed),
        "condition" => $condition,
    ];
    return $arr;
});

pr($total);die;
472=>SC<23 so
condition=false
不考虑其他值。
505=>SC>=23所以首先,我们将检查所有其他值。正如我们看到的,所有其他值都大于26,因此
condition=true


工作

我显示了预期的输出。仔细看,示例数组的键ET值不同。在505数组中,MT的值'MT'=>25,所以条件应该为false,对吗?或者只是ET和SC的值必须检查是。对的问题是:如果是26岁或26岁以上,情况就不是这样了。仍然不起作用。这两个条件都必须为真,因为第二个数组中的ET为26。因为覆盖了该条件,所以代码不能简单地工作。如果min SC为23,而min of ET为26,则该条件为真。它是?你是想说SC>=23和ET>=26,那么true,rest所有的值都不重要吗?不仅仅是ET,对于键的其他值,比如EL,MT,MO,min值是26。就SC而言,最小值为23。因此,如果SC不满足23,则无论其他值如何,条件都必须为false。如果另一个的任何一个值低于26,则无论SC值变为true,条件都必须为false。无论您解释了什么标准,我的代码片段都可以正常工作。请仔细检查。
$arr = [[472 => ['EL' => 52.9, 'MT' => 57.375, 'MO' => 56.6, 'SC' => 22, 'ET' => 50.775]],
        [505 => ['EL' => 53.425, 'MT' => 26, 'MO' => 62.8, 'SC' => 23, 'ET' => 26]]];