首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP - string到多维数组

PHP - string到多维数组
EN

Stack Overflow用户
提问于 2012-01-27 08:14:16
回答 2查看 1.5K关注 0票数 0

以下是我的意见:

WINDMILL_1门打开,ABSWITCH1打开,ABSENSE1打开,ABSWITCH2打开,ABSENSE2打开,活动时间:11:30:00: 03/08/2096 WINDMILL_1门打开,ABSWITCH1打开,ABSENSE1打开,ABSWITCH2打开,ABSENSE2打开,活动时间:11:30:00: 03/08/2096 WINDMILL_1门打开,ABSWITCH1打开,ABSENSE1打开,ABSWITCH2打开,ABSENSE2打开,及时警报:12:46:01: 25/01/2012

我的输出

代码语言:javascript
复制
Array(
    [0] => Array(
        [0] => DOOR OPEN
        [1] => ABSWITCH1 OPEN
        [2] => ABSENSE1 OPEN
        [3] => ABSWITCH2 OPEN
        [4] => ABSENSE2 OPEN
        [5] => EVENT Time:11:30:00 : 03 / 08 / 2096
    )

    [1] => Array(
        [0] => DOOR OPEN
        [1] => ABSWITCH1 OPEN
        [2] => ABSENSE1 OPEN
        [3] => ABSWITCH2 OPEN
        [4] => ABSENSE2 OPEN
        [5] => EVENT Time:11:30:00 : 03 / 08 / 2096
    )

    [2] => Array(
        [0] => DOOR OPEN
        [1] => ABSWITCH1 OPEN
        [2] => ABSENSE1 OPEN
        [3] => ABSWITCH2 OPEN
        [4] => ABSENSE2 OPEN
        [5] => STATUS
        [6] => ALARM ON Time:12:46:01 : 25 / 01 / 2012
    )
)

我设法将上面的输出与以下代码结合在一起

代码语言:javascript
复制
$arr = explode("|", $string);
foreach ($arr as $key => $val)
{
    $arr[$key] = explode(',', $val);
}         
print_r($arr);

但我需要的是

代码语言:javascript
复制
Array (
    [0] => Array (
        [DOOR] => OPEN
        [ABSWITCH1] => OPEN
        [ABSENSE1] => OPEN
        [ABSWITCH2] => OPEN
        [ABSENSE2] => OPEN
        [EVENT] => Time:11:30:00 : 03/08/2096
    ),    
    ...
)

请帮帮我。

EN

回答 2

Stack Overflow用户

发布于 2012-01-27 08:19:04

改为:

代码语言:javascript
复制
$tmp1 = explode('|', $string);
foreach ($tmp1 as $key1 => $val1) {
    $tmp2 = explode(",", $val1);
    foreach ($tmp2 as $key2 => $val2) { 
        $tmp3 = explode(' ', trim($val2));
        $key = ( $tmp3[count($tmp3) - 2] == ':' ? 'EVENT' : $tmp3[count($tmp3) - 2] );
        $newArr[$key1][$key] = $tmp3[count($tmp3) - 1];
    }
}
print_r($newArr);

还可以看到这个示例

票数 1
EN

Stack Overflow用户

发布于 2012-01-27 08:34:42

我有点困惑,因为在您的字符串中没有看到任何管道分隔符。无论如何,您可以使用以下代码:

代码语言:javascript
复制
// $str is your original string
$arr = array();
foreach (explode('WINDMILL_1 ', $str) as $s) {
    if (trim($s) != "")
       $arr[] = explode(', ', $s);
}
print_r($arr);

输出:

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [0] => DOOR OPEN 
            [1] => ABSWITCH1 OPEN 
            [2] => ABSENSE1 OPEN 
            [3] => ABSWITCH2 OPEN 
            [4] => ABSENSE2 OPEN 
            [5] => EVENT Time:11:30:00 : 03/08/2096 
        )

    [1] => Array
        (
            [0] => DOOR OPEN 
            [1] => ABSWITCH1 OPEN 
            [2] => ABSENSE1 OPEN 
            [3] => ABSWITCH2 OPEN 
            [4] => ABSENSE2 OPEN 
            [5] => EVENT Time:11:30:00 : 03/08/2096 
        )

    [2] => Array
        (
            [0] => DOOR OPEN 
            [1] => ABSWITCH1 OPEN 
            [2] => ABSENSE1 OPEN 
            [3] => ABSWITCH2 OPEN 
            [4] => ABSENSE2 OPEN 
            [5] => STATUS 
            [6] => ALARM ON Time:12:46:01 : 25/01/2012
        )

)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9030543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档