php多维数组取出所有指定字段,并转为二维数组
时间: 2024-02-17 15:12:54 浏览: 73
假我们有一个多维数组 `$data`,它的每个元素也是一个数组,包含了多个字段,如下所示:
```php
$data = [
[
'id' => 1,
'name' => 'Alice',
'age' => 20,
'email' => 'alice@example.com',
],
[
'id' => 2,
'name' => 'Bob',
'age' => 25,
'email' => 'bob@example.com',
],
[
'id' => 3,
'name' => 'Charlie',
'age' => 30,
'email' => 'charlie@example.com',
],
];
```
如果我们要取出所有元素的 `id` 和 `name` 字段,并转为二维数组,可以使用循环遍历和 `array_map` 函数,如下所示:
```php
// 定义要取出的字段
$fields = ['id', 'name'];
// 使用循环遍历和 array_map 函数取出指定字段
$result = array_map(function($item) use ($fields) {
return array_intersect_key($item, array_flip($fields));
}, $data);
// 输出结果
print_r($result);
```
输出结果如下:
```
Array
(
[0] => Array
(
[id] => 1
[name] => Alice
)
[1] => Array
(
[id] => 2
[name] => Bob
)
[2] => Array
(
[id] => 3
[name] => Charlie
)
)
```
这里使用了 `array_intersect_key` 函数和 `array_flip` 函数来取出指定字段,它们的作用分别是:
- `array_flip` 函数将数组的键和值互换,用于将要取出的字段作为键。
- `array_intersect_key` 函数取出两个数组中键相同的部分,用于取出指定字段的值。
阅读全文