我有这个输出:
[1] => Array
(
[0] => 0
[2] => 0
[14] => 0
[1] => 28
[12] => 167516
[13] => 237120
)
[2] => Array
(
[0] => 1
[1] => 2
[2] => 2
[12] => 11
[13] => 11
[14] => 11
)
我需要这个结果:
[3] => Array
(
[0] => 1
[2] => 2
[14] => 11
)
我知道我可以使用$arr[3] = array_diff_key($arr[2], array_unique($arr[2]));
在数组中使用唯一值,但是它们的键值不是最小值。
答案 0 :(得分:0)
假设您已将阵列分配为$a1
和$a2
。 AFAIU,您需要$a1
中具有零值的元素。
$a1 = array_filter($a1, function($el) { return $el === 0; });
现在我们将交叉数组来检索匹配。不幸的是, PHP 不允许我们选择要检索的值,它们将来自$a1
:
$inter = array_intersect_key($a1, $a2);
现在我们应该选择最大值:
$result = array_map(function($e) use ($inter,$a2) {
$key = key($inter); next($inter); // we need key to lookup a2
return $e > $a2[$key] ? $e : $a2[$key];
}, $inter
);
希望它有所帮助。
UPD 或者,您是否确定所有零值项都来自$a1
,您可能只是:
$a3 = array_intersect_key(
$a2,
array_filter($a1, function($el) { return $el === 0; })
);