Вот мой вход:
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 ) )