比较两个嵌套数组则保持较小的值
我有这样的阵列比较两个嵌套数组则保持较小的值
[ 'foo' => [
'.fr' => 15,
'.com' => 10,
'.de' => 20,
],
'bar' => [
'.fr' => 12,
'.com' => 16,
'.de' => 18,
],
]
然后我试图比较每个嵌套数组键的值,并只保留较小的一个,来获得这种阵列
的[ '.fr' => 12,
'.com' => 10,
'.de' => 18,
]
我尝试了一些没有成功的foreach,但我不知道要走哪条路。
你有一些线索可以做到吗?
回答:
我会这样做。
foreach ($your_array as $sub_array) { foreach ($sub_array as $key => $value) {
$minimums[$key] = min($value, $minimums[$key] ?? PHP_INT_MAX);
}
}
基本上你迭代子阵列的每个值并替换结果数组中的值,如果你找到相应的键较低的值。
的第二个参数是min
这个表达式:$minimums[$key] ?? PHP_INT_MAX
,这需要的$minimums[$key]
现有的值,使用PHP_INT_MAX
如果该键尚未设定。
回答:
$arrays = [ 'foo' => [
'.fr' => 15,
'.com' => 10,
'.de' => 20,
],
'bar' => [
'.fr' => 12,
'.com' => 16,
'.de' => 18,
],
];
$output = [];
foreach ($arrays as $nestedArray) {
foreach($nestedArray as $key => $value) {
$output[$key] = (array_key_exists($key, $output) ? min($output[$key], $value) : $value);
}
}
以上是 比较两个嵌套数组则保持较小的值 的全部内容, 来源链接: utcz.com/qa/266172.html