首页 > 解决方案 > 如何使用 PHP 将具有特殊结构的数组转换为键值对数组?

问题描述

这是我正在尝试做的事情的来源:

  1. 来源:a11993b18486c13240388
  2. 到目前为止我做了什么:
$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"
}

也许有更好的方法来做到这一点?如果有人好心地指导我,我将不胜感激。

标签: phparraysregex

解决方案


您需要循环使用数组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]);

在演示中检查结果


推荐阅读