php数组中的多个条件
我如何检查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
$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 socondition=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]]];