Intereting Posts
Как долго mysql_connect остается открытым? Создание образа PHP из шестнадцатеричных значений в базе данных Передача массива через jQuerys $ .post уменьшает позиции Как автоматически включить расширения php в Homestead на бродяжничестве Обновление схемы таблиц без влияния на данные в Laravel Запрос предварительной проверки CORS, возвращающий HTTP 405 XML и PHP Простой вопрос PHPMailer v. Mail () для простой формы контакта Как устранить разрыв строки из функции fgets в PHP? Вызовите частные методы и частные свойства извне класса в PHP if ($ _ FILES ! = "") запускается, если файлы, не запускаются, если нет головной боли в файлах как заставить хром не перезагружать изображения с тем же URL-адресом, пока страница не обновится, как firefox CakePHP: не удается получить доступ к базе данных MySQL Тернарные операторы. Возможно одностороннее действие? корзина для покупок magento не понятна

PHP – строка для многомерного массива

Вот мой вход:

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 ), ... ) 

Пожалуйста, помогите мне.

Solutions Collecting From Web of "PHP – строка для многомерного массива"

Изменить на:

 $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 ) )