php - 如何在 php 中使用动态数组键创建字符串?
问题描述
这个数组是动态的,可以有任意数量的记录,并且可以有任何级别的嵌套数组:
Array
(
[name] => richard
[email] => richard@gmail.com
[address] => Array
(
[city] => paris
[zip] => 12121
)
[address1] => Array
(
[city] => paris
[zip] => 12121
)
[address3] => Array
(
[city] => paris
[zip] => 12121
)
)
我正在尝试从嵌套数组键构造一个字符串。我需要使用循环从键构造这样的字符串:
结果应该是这样的:
address.city
address.zip
address1.city
address1.zip....so on
如何使用递归来实现?
解决方案
这个递归函数会做你想做的事。它检查数组当前级别的每个项目,如果它是一个数组,则将当前键附加到该数组的所有键上,并尽可能深地递归。如果该项目不是一个数组,它的键只是简单地附加到该级别的输出。
function list_keys($array) {
$output = array();
foreach ($array as $k => $v) {
if (is_array($v)) {
foreach (list_keys($v) as $path) {
$output[] = "$k.$path";
}
}
else {
$output[] = $k;
}
}
return $output;
}
print_r(list_keys($array));
输出(用于您的样本数据)
Array (
[0] => name
[1] => email
[2] => address.city
[3] => address.zip
[4] => address1.city
[5] => address1.zip
[6] => address3.city
[7] => address3.zip
)
推荐阅读
- javascript - 如何附加 AJAX 回复
- php - PHP比较日期返回true
- java - WebSphere Liberty 中具有相同 JNDI 的多个数据源
- javascript - 如何编写显示和隐藏密码输入字段的代码
- javascript - Vue/Webpack 中的多个 .env.development 配置
- ios - CGImage 没有属性/元数据 (CGImageProperties)
- mongodb - 电子邮件集合的高效索引,用于按电子邮件域进行排序和过滤
- file - 如何更改 Odoo 12 Qweb-text 文件的编码
- xquery - 由“ ”实体引用引起的 XQuery Invalid entity reference 错误
- python - 使用 args 的带有 get_absolute_url() 的 Django 模板不起作用