Разбиваю строку на массив, ищу совпадение по id, вывожу найденное в массиве значение. Как сделать проще и короче данную функцию? PHP: $id = '2'; $str = '1_56_0,2_0_0,3_6_0'; function item($str, $id){ foreach (explode(",", $str) as $key) { $cook = explode("_", $key); if($cook[0] == $id){ $r[] = $key; break; } } return $r[0]; }
@zhenia3003, вы не учитываете то, что может быть два и более совпадения - '1_56_0,2_0_0,3_6_0,2_8_1,2_25_3'? PHP: $id = '2'; $str = '1_56_0,2_0_0,3_6_0,2_2_1'; preg_match('/(?<=^|,)'.$id.'_\d+_\d+(?=,|$)/', $str, $matches); print_r($matches); // или preg_match_all('/(?<=^|,)'.$id.'_\d+_\d+(?=,|$)/', $str, $matches); print_r($matches);