翻转键并从另一个数组构造值

时间:2019-07-22 14:35:17

标签: php arrays

我有以下两个数组:

$a1 = [56,60];
$a2 = [60 => 'aa', 61 => 'bb', 62 => 'cc', 63 => 'dd'];

我正在尝试应用array_map来构建一个看起来像这样的新数组:

Array
(
    [56] =>        
    [60] => aa
)

基本上,我需要遍历第一个数组,如果在第二个数组中找到它,则将获取其对应的值,否则,将其设置为空字符串。 array_map是解决此问题的最佳方法吗?

1 个答案:

答案 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
)