如何检查具有多个条件的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
的值上产生condition
键。但是如果我们在[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,其他KEYS(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;
如果最小SC为23且所有其他的最小值为26,那么条件为真。
说明:
472 => SC = 26(> = 23),所有其他值> = 26,所以condition = true
505 => SC = 23(> = 23)现在我将检查其他值。现在MT = 25所以condition = 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]]];
472 => SC <23所以condition = false
无论其他价值如何。
505>> SC> = 23首先是condition = true
,现在我们将检查所有其他值。因为我们看到所有其他都超过26,所以condition =true
。
工作demo