[英]Multiple Condition inside php array
如何檢查具有多個條件的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]的condition
值應為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,其他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;
如果min SC的最小值為23,而其他最小值的最小值為26,則條件為true。
說明:
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
。
工作演示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.