本文介绍了扁平化多维数组连接键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
可能的重复:
PHP 在连接键时将嵌套数组转换为单个数组?
递归获取数组的键并创建下划线分隔的字符串
请在回答之前阅读整个问题.
Please, read the whole question before answering.
我有这个多维数组:
$data = array(
'user' => array(
'email' => 'user@example.com',
'name' => 'Super User',
'address' => array(
'billing' => 'Street 1',
'delivery' => 'Street 2'
)
),
'post' => 'Hello, World!'
);
我想让它变平,变成:
$data = array(
'user.email' => 'user@example.com',
'user.name' => 'Super User',
'user.address.billing' => 'Street 1',
'user.address.delivery' => 'Street 2',
'post' => 'Hello, World!'
);
重要:
钥匙对我来说非常很重要.我希望它们连接起来,用句点分隔.
The keys are very important to me. I want them concatenated, separated by periods.
它应该适用于任何级别的嵌套.
It should work with any level of nesting.
谢谢!
推荐答案
感谢所有给出的答案.
我做了如下改造,是改进版.它不需要根前缀,不需要使用引用,读起来更干净,而且名字更好:
I have transformed it in the following, which is an improved version. It eliminates the need of a root prefix, does not need to use references, it is cleaner to read, and it has a better name:
function array_flat($array, $prefix = '')
{
$result = array();
foreach ($array as $key => $value)
{
$new_key = $prefix . (empty($prefix) ? '' : '.') . $key;
if (is_array($value))
{
$result = array_merge($result, array_flat($value, $new_key));
}
else
{
$result[$new_key] = $value;
}
}
return $result;
}
这篇关于扁平化多维数组连接键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!