我有以下两个数组:
$a1 = [56,60];
$a2 = [60 => 'aa', 61 => 'bb', 62 => 'cc', 63 => 'dd'];
我正在尝试应用array_map
来构建一个看起来像这样的新数组:
Array
(
[56] =>
[60] => aa
)
基本上,我需要遍历第一个数组,如果在第二个数组中找到它,则将获取其对应的值,否则,将其设置为空字符串。 array_map
是解决此问题的最佳方法吗?
答案 0 :(得分:2)
使用array_key_exists()
$a1 = [56,60];
$a2 = [60 => 'aa',61 => 'bb',62 => 'cc',63 => 'dd'];
$new = [];
foreach ( $a1 as $key ) {
if ( array_key_exists($key, $a2) ) {
$new[$key] = $a2[$key];
}
}
print_r($new);
结果
Array
(
[60] => aa
)
或者,如果您真的希望出现空白,这将起作用
$a1 = [56,60];
$a2 = [60 => 'aa',61 => 'bb',62 => 'cc',63 => 'dd'];
$new = [];
foreach ( $a1 as $key ) {
$new[$key] = array_key_exists($key, $a2) ? $a2[$key] : null;
}
print_r($new);
结果
Array
(
[56] =>
[60] => aa
)
甚至
$a1 = [56,60];
$a2 = [60 => 'aa',61 => 'bb',62 => 'cc',63 => 'dd'];
$new = [];
foreach ( $a1 as $key ) {
$new[$key] = $a2[$key] ?? null;
}
print_r($new);
结果
Array
(
[56] =>
[60] => aa
)