Собственно САБЖ! Есть данные: $str = " apple green red yellow banana green yellow cherry red green yellow "; Как из этой строки получить массив вида: PHP: array['apple' => 'green red yellow', 'banana' => 'green yellow', 'cherry' => 'red green yellow']; ?? Пробовал через PHP: $result = preg_split("/\bapple\b|\bbanana\b|\bcherry\b/", $str); Но такой вариант возвращает мне: PHP: array(4) { [0]=> string(2) " " [1]=> string(24) " green red yellow " [2]=> string(19) " green yellow " [3]=> string(22) " red green yellow " } Дело в том что у меня в данных может не быть apple или banana, но различать их как-то надо...
В общем если кому будет интересно, то решил эту задачу так: PHP: function createNewArray($arr, $keys){ foreach($arr as $k){ if(in_array(trim($k), $keys)){ $val = trim($k); continue; } if(trim($k) != '') $new_arr[$val][] = trim($k); } return $new_arr; } $arr = explode("\n", $str); $fruits = array('apple', 'cherry', 'banana'); $res = createNewArray($arr, $fruits); Получаю: Код (Text): array(3) { ["apple"]=> array(3) { [0]=> string(5) "green" [1]=> string(3) "red" [2]=> string(6) "yellow" } ["banana"]=> array(2) { [0]=> string(5) "green" [1]=> string(6) "yellow" } ["cherry"]=> array(3) { [0]=> string(3) "red" [1]=> string(5) "green" [2]=> string(6) "yellow" } }