【发布时间】:2019-03-01 06:25:03
【问题描述】:
如何在多个条件下检查 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。我尝试解决这个问题几乎两天两夜,它仍然不起作用。因此,如果您能帮助我,我将不胜感激。谢谢
【问题讨论】:
-
我显示了预期的输出。仔细看,样本数组在key ET值上是不一样的。
-
在 505 数组中 MT 的值 'MT' => 25 所以条件应该是假的吧?或者只是 ET 和 SC 的值必须检查
-
是的。正确的。问题是:当它是 26 或更多时,它是不正确的。
标签: php arrays filter conditional-statements