【发布时间】:2017-03-04 13:35:50
【问题描述】:
有很多使用点符号访问 PHP 数组的技巧和代码示例,但我想做一些相反的事情。我想采用这样的多维数组:
$myArray = array(
'key1' => 'value1',
'key2' => array(
'subkey' => 'subkeyval'
),
'key3' => 'value3',
'key4' => array(
'subkey4' => array(
'subsubkey4' => 'subsubkeyval4',
'subsubkey5' => 'subsubkeyval5',
),
'subkey5' => 'subkeyval5'
)
);
然后把它变成这个(可能通过一些递归函数):
$newArray = array(
'key1' => 'value1',
'key2.subkey' => 'subkeyval',
'key3' => 'value3',
'key4.subkey4.subsubkey4' => 'subsubkeyval4',
'key4.subkey5.subsubkey5' => 'subsubkeyval5',
'key4.subkey5' => 'subkeyval5'
);
【问题讨论】:
-
我认为 array_walk_recursive 可能能够帮助我构建新密钥,因为它似乎可以通过递归完成很多繁重的工作,但它不提供 all 数组的键。例如,在 $myArray 上使用 array_walk_recursive(通过 PHP 文档页面上的示例函数运行)只会为我提供没有数组值的键。我正在继续尝试使用一些旧的 foreach 循环编写我自己的递归函数,但这是漫长的一天,让我很头疼。如果我得到它(或更接近),我会继续努力并更新
-
Laravel 有
Illuminate\Support\Arr::dot($the_array)做,可以在php artisan tinker测试。