我想转换表单的php字符串{1}1{2}3{3}6到php数组


I want to convert php string of form {1}1{2}3{3}6 to php array

我在php中得到了这个{1}1{2}3{3}6字符串的格式,我想让大括号中的数字成为数组的索引,存储在索引上的值将是大括号之后的值。这样我就可以很容易地应用foreach在数据库中输入值。

输出阵列应类似:

array([1]=>1,[2]=>3,[3]=>6)
$result = [];
$data = '{1}1{2}3{3}6';
preg_match_all('/'{('d+)'}'s*('d+)/', $data, $m);
foreach ($m[1] as $i => $key) {
    $result[$key] = $m[2][$i];
}

您可以使用regex"正则表达式";如下所示:

<?php
$string="{1}1{2}3{3}6";
//Define the regex
$regex = "/{([a-zA-Z0-9_]*)}'s*([a-zA-Z0-9_]*)/";
preg_match_all($regex, $string, $matches);
//Temporary array to store the data
$arry = array();
foreach($matches[1] as $key => $value){
        $arry[$value] = $matches[2][$key];
}
var_dump($arry);
?>

[概念验证]

阵列(3){

[1] =>字符串(1)";1〃
[2] =>字符串(1)";3〃
[3] =>字符串(1)";6〃;

}

尝试:

$str = '{1}1{2}3{3}6';
$arr = explode("}", substr(str_replace("{", "}", $str), (strlen($str)-1)*-1));
$arr = array_map(function ($v){ global $arr; return $arr[$v+1]; }, array_flip(array_intersect_key($arr, array_flip(array_filter(array_keys($arr), function ($v){ return !($v & 1); })))));