如何在 PHP 中将二维数组映射到一维数组

How to map a 2D array to 1D array in PHP

我不知道如何在 php 中执行以下 array_map。非常感谢任何帮助。

输入:

$arrayA = [
    [
        'slug' => 'bob',
        'name' => 'Bob',
        'age' => '10',
    ],
    [
        'slug' => 'alice',
        'name' => 'Alice',
        'age' => '15',
    ],
    [
        'slug' => 'carl',
        'name' => 'Carl',
        'age' => '17',
    ]
]

期望输出:

$arrayB = [
    'bob' => 'Bob',
    'alice' => 'Alice',
    'carl' => 'Carl'
]

我目前有:

我在这里映射到一个数组,我知道这不是我想要的,但我不知道是否有一些语法适合我 return 只是 $x['slug'] => $x['name'] 没有括号?

$arrayB = array_map(fn($x) => [$x['slug'] => $x['name']], $arrayA);

我当前的输出(不是我想要的):

$arrayB = [
    [ 'bob' => 'Bob' ],
    [ 'alice' => 'Alice' ],
    [ 'carl' => 'Carl' ]
];

使用 array_map,您无法生成具有您想要的架构的数组。请改用 array_map foreach。像那样:

<?php

$arrayA = [
    [
        'slug' => 'bob',
        'name' => 'Bob',
        'age' => '10',
    ],
    [
        'slug' => 'alice',
        'name' => 'Alice',
        'age' => '15',
    ],
    [
        'slug' => 'carl',
        'name' => 'Carl',
        'age' => '17',
    ]
];

$arrayB = [];
foreach($arrayA as $i) {
  $arrayB[$i['slug']] = $i['name'];
}

print_r($arrayB);

// output: 
/* Array ( 
  [bob] => Bob 
  [alice] => Alice 
  [carl] => Carl 
) 

有一个 PHP 函数可以完全满足您的需求:array_column()

$arrayA = [
    [
        'slug' => 'bob',
        'name' => 'Bob',
        'age' => '10',
    ],
    [
        'slug' => 'alice',
        'name' => 'Alice',
        'age' => '15',
    ],
    [
        'slug' => 'carl',
        'name' => 'Carl',
        'age' => '17',
    ]
];

$arrayB = array_column($arrayA, 'name', 'slug');

那会给你:

Array
(
    [bob] => Bob
    [alice] => Alice
    [carl] => Carl
)

这是一个演示:https://3v4l.org/LGcES