如何在 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
我不知道如何在 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