这是我想要做的事情的来源:
$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"
}
也许有更好的方法可以做到这一点? 如果有人请我对此给予指导,我将不胜感激。
答案 0 :(得分:1)
您需要使用for
遍历数组,并在循环中将值添加到新数组中。
$newArr = [];
for ($i=0; $i<count($arr); $i+=2)
$newArr[$arr[$i]] = $arr[$i+1];
结果
Array
(
[a] => 11993
[b] => 18486
[c] => 13240388
)
在demo中查看结果
此外,如果您要在字符串使用正则表达式上使用
$ref = "a11993b18486c13240388";
preg_match_all("/([a-z])(\d+)/i", $ref, $matches);
$newArr = array_combine($matches[1], $matches[2]);
在demo中查看结果
答案 1 :(得分:0)
尝试以下操作:
$list = array(
"a",
"11993",
"b",
"18486",
"c",
"13240388"
);
$new_list = array();
for($i=0;$i<count($list);$i=$i+2) {
$new_list[$list[$i]] = $list[$i+1];
}
echo '<pre>'; print_r($new_list); echo '</pre>';
答案 2 :(得分:0)
我希望您的问题的答案是这样,因为您正在寻找对象:-
$arr=[
"a",
"11993",
"b",
"18486",
"c",
"13240388"
];
$arrForObj = [];
for ($i=0; $i<count($arr); $i+=2){
$arrForObj[$arr[$i]] = $arr[$i+1];
}
$obj=(object)$arrForObj;
echo "<pre>";
var_dump($obj);