📅  最后修改于: 2023-12-03 14:55:00.668000             🧑  作者: Mango
在 Laravel 中,用于将多个嵌套数组合并为单个数组的有用工具是 array_collapse
。但是,如果您需要将数组折叠成特定的子项键,则您需要编写自己的逻辑代码。在本文中,我们将讨论如何将数组折叠成给定的键,让我们开始吧!
我们将从一个简单的数组开始,该数组具有嵌套结构:
$array = [
[
'name' => 'Alice',
'phone' => [
'home' => '123-456-7890',
'work' => '098-765-4321',
],
],
[
'name' => 'Bob',
'phone' => [
'home' => '555-555-5555',
'work' => '666-666-6666',
],
],
];
现在,我们希望按以下方式将它折叠起来:
[
'Alice_home' => '123-456-7890',
'Alice_work' => '098-765-4321',
'Bob_home' => '555-555-5555',
'Bob_work' => '666-666-6666',
]
为了实现这个功能,我们需要编写自己的逻辑代码。下面是一个 collapseBy
函数的示例实现,它接受一个数组和一个键名,将该数组折叠为键的相应子项值:
function collapseBy(array $array, $key)
{
$result = [];
foreach ($array as $item) {
foreach ((array) data_get($item, $key) as $value) {
$result[$item['name'] . '_' . $key] = $value;
}
}
return $result;
}
在这里,我们使用了 data_get
函数,它是 Laravel 的一个辅助函数,用于获取嵌套数组中的值。我们对处理后的结果进行质量检查,最终代码如下:
$array = [
[
'name' => 'Alice',
'phone' => [
'home' => '123-456-7890',
'work' => '098-765-4321',
],
],
[
'name' => 'Bob',
'phone' => [
'home' => '555-555-5555',
'work' => '666-666-6666',
],
],
];
$result = collapseBy($array, 'phone');
var_dump($result);
输出:
array(4) {
["Alice_home"]=>
string(12) "123-456-7890"
["Alice_work"]=>
string(12) "098-765-4321"
["Bob_home"]=>
string(12) "555-555-5555"
["Bob_work"]=>
string(12) "666-666-6666"
}
在本文中,我们讨论了如何将嵌套的数组折叠成特定的子项键。我们甚至只需几行代码就可以使这个想法成为现实。在开发 Laravel 应用程序时,data_get
函数是非常方便和有用的,因为它可以帮助我们在多维数组中获取值。