我有这个数组
[
'foo' => [
'.fr' => 15,
'.com' => 10,
'.de' => 20,
],
'bar' => [
'.fr' => 12,
'.com' => 16,
'.de' => 18,
],
]
然后我尝试比较每个嵌套数组键的值,只保留较小的数组,以获得这种数组
[
'.fr' => 12,
'.com' => 10,
'.de' => 18,
]
我尝试了一些foreach但没有成功,但我不知道该走哪条路。
你有这方面的线索吗?
答案 0 :(得分:2)
我会这样做。
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
的现有值
答案 1 :(得分:1)
$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);
}
}