взорвать список из двух элементов в массиве в качестве значения ключа =>

Я хотел бы взорвать многострочную строку, подобную этой

color:red material:metal 

к массиву, подобному этому

 $array['color']=red $array['material']=metal 

Есть идеи?

Используйте explode () , вы можете использовать regexp для него, но это достаточно просто без накладных расходов.

 $data = array(); foreach (explode("\n", $dataString) as $cLine) { list ($cKey, $cValue) = explode(':', $cLine, 2); $data[$cKey] = $cValue; } 

Как упоминалось в комментариях, если данные поступают из среды Windows / DOS, у него могут быть новые строки CRLF, добавив следующую строку до того, как foreach() решит это.

 $dataString = str_replace("\r", "", $dataString); // remove possible \r characters 

Альтернативный вариант с регулярным выражением может быть довольно приятным, используя preg_match_all () и array_combine () :

 $matches = array(); preg_match_all('/^(.+?):(.+)$/m', $dataString, $matches); $data = array_combine($matches[1], $matches[2]); 

Попробуй это

 $value = '1|a,2|b,3|c,4|d'; $temp = explode (',',$value); foreach ($temp as $pair) { list ($k,$v) = explode ('|',$pair); $pairs[$k] = $v; } print_r($pairs); 

сначала взорваться на разрыве линии. Prolly \ n

Затем взорвите каждый из результирующих элементов массива на: и установите новый массив на этот ключ / значение.