php - 如何使用 PHP 将具有特殊结构的数组转换为键值对数组?
问题描述
这是我正在尝试做的事情的来源:
- 来源:a11993b18486c13240388
- 到目前为止我做了什么:
$array = preg_split("/(,?\s+)|((?<=[a-z])(?=\d))|((?<=\d)(?=[a-z]))/i", $ref);
我正在尝试将生成的 $array 转换为对象:
[
"a",
"11993",
"b",
"18486",
"c",
"13240388"
]
按 2 分组,其中第一项是关键,第二项是价值:以下是我想要的结果:
{
"a"=>"11993",
"b"=>"18486",
"c"=>"13240388"
}
也许有更好的方法来做到这一点?如果有人好心地指导我,我将不胜感激。
解决方案
您需要循环使用数组for
并在循环中将值添加到新数组。
$newArr = [];
for ($i=0; $i<count($arr); $i+=2)
$newArr[$arr[$i]] = $arr[$i+1];
结果
Array
(
[a] => 11993
[b] => 18486
[c] => 13240388
)
在演示中检查结果
此外,如果您想在字符串使用时使用正则表达式
$ref = "a11993b18486c13240388";
preg_match_all("/([a-z])(\d+)/i", $ref, $matches);
$newArr = array_combine($matches[1], $matches[2]);
在演示中检查结果
推荐阅读
- azure - 不止于 Key 和 values 配置
- java - 在其他数据中选择包含有关智能手机的信息的条目
- python - 出现错误AttributeError:'_tkinter.tkapp'对象没有属性'getitems'
- spring-boot - 如何将 gradle spring boot java war 应用程序部署到应用引擎标准(不是 flex env)中
- html-email - Gmail 无法识别 valign 或 vertical-align
- c - 这两个宏有什么区别吗?
- node.js - 调试 JavaScript 堆内存不足错误的最佳步骤
- azure - 使用 Azure CLI 检索 Azure 存储帐户密钥
- javascript - 管道无效 url 时节点请求模块服务器崩溃
- javascript - Use React Portals within the React-App (not outside the DOM)