php - 将字符串多次分解成多维数组
问题描述
我有这个:
$var = 'es@set:col-md-8 col-lg-4 col-xl-6|info:f1|but:md
fs@set:col-md-4 col-lg-8 col-xl-6|info:f4|but:md';
我想得到它:
$arr = array(
'es' => array(
'set' => 'col-md-8 col-lg-4 col-xl-6',
'info' => 'f1',
'but' => 'md'),
'fs' => array(
'set' => 'col-md-4 col-lg-8 col-xl-6',
'info' => 'f4',
'but' => 'md'),
);
许多爆炸:“\n”“@”“|” “:”
任何帮助将不胜感激。
谢谢!
解决方案
这需要遍历通过在换行符上爆炸创建的字符串,通过在 上爆炸来获得键/值对,通过在 上@
爆炸值来获得键的各个项目|
,然后通过在每个项目上爆炸来获得最终的键/值对:
$var = 'es@set:col-md-8 col-lg-4 col-xl-6|info:f1|but:md
fs@set:col-md-4 col-lg-8 col-xl-6|info:f4|but:md';
$arr = array();
foreach (explode("\n", $var) as $item) {
list($key, $value) = explode('@', $item);
foreach (explode('|', $value) as $val) {
list ($k, $v) = explode(':', $val);
$arr[$key][$k] = $v;
};
}
print_r($arr);
输出:
Array (
[es] => Array (
[set] => col-md-8 col-lg-4 col-xl-6
[info] => f1
[but] => md
)
[fs] => Array (
[set] => col-md-4 col-lg-8 col-xl-6
[info] => f4
[but] => md
)
)
推荐阅读
- android - 如何从此切换按钮侦听器返回布尔值?
- git - 当我尝试安装新软件包时,NPM 抛出错误
- c++ - 如何在移动列表视图中添加滚动条?并且用户只能垂直滚动特定区域
- java - 有 Java 街道地址类型吗?
- html - 使用 RegEx 作为输入模式来验证密码
- jboss-cli - 使用 JBoss-CLI 创建 DB2 XA 数据源
- c# - 如何将 asp.net 身份邮件功能用于其他功能 [显示错误]
- html - 如何在 Angular 中从 json 更改下拉菜单时显示特定父级的子级 - 6
- android - 从 PagerAdapter 调用时片段消失
- c++ - 2019年COM和OLE用在哪里?