[英]PHP - string to multidimensional array
这是我的输入:
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
我的输出
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
)
)
我设法将上面的输出与此代码
$arr = explode("|", $string);
foreach ($arr as $key => $val)
{
$arr[$key] = explode(',', $val);
}
print_r($arr);
但是我需要的是
Array (
[0] => Array (
[DOOR] => OPEN
[ABSWITCH1] => OPEN
[ABSENSE1] => OPEN
[ABSWITCH2] => OPEN
[ABSENSE2] => OPEN
[EVENT] => Time:11:30:00 : 03/08/2096
),
...
)
请帮帮我。
改成:
$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);
另请参见此示例 。
我有点困惑,因为您的字符串中没有任何管道定界符。 无论如何,您可以使用以下代码:
// $str is your original string
$arr = array();
foreach (explode('WINDMILL_1 ', $str) as $s) {
if (trim($s) != "")
$arr[] = explode(', ', $s);
}
print_r($arr);
输出:
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
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.