比较两个嵌套数组则保持较小的值

我有这样的阵列比较两个嵌套数组则保持较小的值

[ 

'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

回到顶部