简体   繁体   English

使用正则表达式的PHP解析数组

[英]PHP Parsing Array with Regex

I'm calling my remote API and getting this reply: 我正在调用远程API并收到以下答复:

Array
(
    [TEST] => 1.1.1|Running
    [MODEL] => 4.91|Running
    [ENGING] => 2.4.37|Running
)

I want to Parse it and change it to: 我想解析它并将其更改为:

Array
(
    [TEST] => [
        'version' => "1.1.1",
        'status' => 'Running'
    ]
    [MODEL] => [
        'version' => "4.91",
        'status' => 'Running'
    ]
    [ENGING] => [
        'version' => "2.4",
        'status' => 'Stop'
    ]
)

I tried a lot of ways, and searched a lot on Google but didn't find a solution. 我尝试了很多方法,并在Google上进行了很多搜索,但没有找到解决方案。

I want to split what's coming after the "|" 我想分割“ |”之后的内容 to get the word after it. 得到这个词。

Thanks! 谢谢!

You can use array_map and array_combine to get your desired result: 您可以使用array_maparray_combine获得所需的结果:

$response = array
(
    'TEST' => '1.1.1|Running',
    'MODEL' => '4.91|Running',
    'ENGING' => '2.4.37|Running'
);
$response = array_map(function ($v) { 
                          return array_combine(array('version', 'status'), explode('|', $v)); 
                                    },
                      $response);
print_r($response);

Output: 输出:

Array
(
    [TEST] => Array
        (
            [version] => 1.1.1
            [status] => Running
        )    
    [MODEL] => Array
        (
            [version] => 4.91
            [status] => Running
        )    
    [ENGING] => Array
        (
            [version] => 2.4.37
            [status] => Running
        )    
)

Demo on 3v4l.org 3v4l.org上的演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM