Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 转换包含多维数组键和值的字符串_Php_Arrays_Regex_Stdclass_Recursive Backtracking - Fatal编程技术网

Php 转换包含多维数组键和值的字符串

Php 转换包含多维数组键和值的字符串,php,arrays,regex,stdclass,recursive-backtracking,Php,Arrays,Regex,Stdclass,Recursive Backtracking,我使用TPPAPI检查域可用性和域注册,但我收到字符串中的响应 获取会话,返回字符串OK:t73484678463765 域检查,返回字符串woohoo123.nz:确定:最小值=1,最大值=2 在另一种情况下,返回字符串woohoo123.nz:ERR:102,这是消息 当它返回OK时,它在child中有&,但当ERR时,它有, 我想将返回的字符串转换为数组 [ 'woohoo123.nz' => [ 'OK' => [ 'M

我使用TPP
API
检查域可用性和域注册,但我收到
字符串中的响应

  • 获取会话,返回字符串
    OK:t73484678463765

  • 域检查,返回字符串
    woohoo123.nz:确定:最小值=1,最大值=2

  • 在另一种情况下,返回字符串
    woohoo123.nz:ERR:102,这是消息

  • 当它返回
    OK
    时,它在child中有
    &
    ,但当
    ERR
    时,它有

    我想将返回的
    字符串
    转换为
    数组

     [
         'woohoo123.nz' => [
             'OK' => [
                 'Minimum' => 1,
                 'Maximum' => 2,
             ]
         ]
     ]
    
     [
         'woohoo123.nz' => [
             'ERR' => [
                 'code' => 102,
                 'message' => 'This is message',
             ]
         ]
     ]
    
    例如输入
    woohoo123.nz:OK:Minimum=1&Maximum=2
    ,然后输出
    array

     [
         'woohoo123.nz' => [
             'OK' => [
                 'Minimum' => 1,
                 'Maximum' => 2,
             ]
         ]
     ]
    
     [
         'woohoo123.nz' => [
             'ERR' => [
                 'code' => 102,
                 'message' => 'This is message',
             ]
         ]
     ]
    
    输入
    woohoo123.nz:ERR:102,这是消息
    ,并在
    数组

     [
         'woohoo123.nz' => [
             'OK' => [
                 'Minimum' => 1,
                 'Maximum' => 2,
             ]
         ]
     ]
    
     [
         'woohoo123.nz' => [
             'ERR' => [
                 'code' => 102,
                 'message' => 'This is message',
             ]
         ]
     ]
    

    我更喜欢重用代码,我更喜欢
    递归
    回调
    ,但不确定在这种情况下。

    不确定这是否是您要找的。它适用于您的示例,但仅当输入字符串严格遵循该格式时才会继续工作

        function stringToArray($inputStr) {
        $array = [];
    
        $topComponents = explode(': ',$inputStr);
        $parametersStr = $topComponents[count($topComponents) -1];
        if (strpos($parametersStr,'&') !== FALSE) {
            $tmpArr = explode('&',$parametersStr);
            foreach ($tmpArr as $val) {
                $comp = explode('=',$val);
                $array[$comp[0]] = $comp[1];
            }
        } else if ($topComponents[count($topComponents) - 2] === "ERR") {
            $tmpArray = explode('ERR: ',$parametersStr);
            $tmpArray = explode(', ',$tmpArray[0]);
            $array = [
                "code" => intval($tmpArray[0]),
                "message" => $tmpArray[1]
            ];
        } else {
            $array = $parametersStr;
        }
    
        for ($i=count($topComponents) -2; $i >= 0; $i--) {
            $newArray = [];
            $newArray[$topComponents[$i]] = $array;
            $array = $newArray;
        }
    
        return $array;
    }
    
    print_r(stringToArray("OK: t73484678463765"));
    

    我不确定你想要什么。您能给出一些可能的字符串输入和所需的
    array
    /
    stdClass
    输出的示例吗?我想将这些字符串转换为array。字符串包括
    &
    并转换为多维数组@HurricaneDevelopment我已经重写了函数。这几乎只是针对这个特定的案例。让我知道它是否适合你。这就是我想要的。谢谢你的时间!