php - php从字符串创建数组和子数组
问题描述
我想将字符串转换为数组。我想要一个具有这样子数组的数组:
我的字符串:
field=3,icon=[class='test',svg=null],test=[pass='345',username='salar']
至 :
array("field"=> 3,"icon"=> [ "class" => "test", "svg" => null ], "test"=> [ "pass" => "345", "username" => 'salar' ] )
解决方案
我强烈建议更改正在生成的字符串格式。最好使用 JSON 等现有格式,而不是创建/解析您自己的格式。
说到 JSON,“解析”这种格式的一种方法是将其转换为 JSON,然后对其进行解析。
因此,将 转换=
为:
,将所有键(和值)包装在 中""
,转换[]
为{}
,然后将整个内容包装在{}
.
<?php
$data = "field=3,icon=[class='test',svg=null],test=[pass='345',username='salar']";
// Fix quotes
$jsonData = str_replace("'", '"', $data);
// Convert arrays to objects
$jsonData = str_replace(['[', ']'], ['{', '}'], $jsonData);
// Fix keys
$jsonData = preg_replace("/(^|,|{)(.+?)=/", '$1"$2":', $jsonData);
// Parse as JSON
$result = json_decode('{' . $jsonData . '}', true);
推荐阅读
- r - 为什么 vglm 中的变量顺序会对 Hosmer Lemeshow 测试产生影响?
- django - Django Channels 2.4 ... WebSocket 消息是否总是按顺序到达
- python - 如何使用 python 和 pandas 重命名子文件夹中的多个 .Json 文件
- swift - Swift 中的 FSCalendar 日期选择错误
- gradle - 关于“编译项目()”Gradle 任务的问题?
- jira - 如何使用 Jitterbit 作为中间件将 salesforce 连接到 jira
- javascript - 阻止 textArea 中的某个字符
- sqlite - 空列使用的 SQLite 磁盘空间?
- python - 如何将df转换为由python pandas中的索引值组成的列表字典
- python - PyTorch 梯度不会流经张量的克隆