Есть строка: Код (Text): weight=230&weight=280&brend=Pluffies&price_ot=40&price_do=110 На выходе должен получиться массив: Код (Text): array( 'key' => 'weight', 'value' => array( '230', '280' ) ), array( 'key' => 'brend', 'value' => array( 'Pluffies' ) ), array( 'key' => 'price', 'value' => array( 40, 110 ), 'type' => 'numeric', 'compare'=> 'BETWEEN' ) Подскажите направление...
explode по &, затем каждый элемент полученного массива разбиваем на пары параметр,значение (можно тоже explode, но по '=') и попутно, или после - собираем результирующий массив.
Делаю так: Код (Text): $vals = explode( '&', $str); // weight=230&weight=280&brend=Pluffies&size=11 $array = []; foreach ( $vals as $val ) { $a = explode( '=', $val); $arr = []; $arr['key'] = $a[0]; $arr['value'] = $a[1]; $array = $arr; } Только массив из последнего значения получается --- Добавлено --- Может есть вариант более короткой записи?
В восьмой строчке забыли добавление в массив сделать. Ну и в резкльтирующем массиве ещё надо будет сделать объединение нескольких значений для одинаковых ключей. Может и есть. Только сначала может быть лучше все "на пальцах", по шагам сделать...
Последняя строка так должна быть: $array[] = $arr; --- Добавлено --- Получился массив: Код (Text): Array ( [0] => Array ( [key] => weight [value] => 270 ) [1] => Array ( [key] => weight [value] => 280 ) [2] => Array ( [key] => brend [value] => Pluffies ) [3] => Array ( [key] => size [value] => 11 ) ) Каким образом объединить все value с ключом weight в 1 массив?
@Yankovitz, например, таким: PHP: $str = "weight=230&weight=280&brend=Pluffies&price_ot=40&price_do=110"; $vals = explode('&', $str); // weight=230&weight=280&brend=Pluffies&size=11 $array = []; $arrkeys = []; $i = 0; foreach ($vals as $val) { $a = explode('=', $val); $key = empty($a[0]) ? 'undefined' : $a[0]; $value = isset($a[1]) ? $a[1] : null; if(array_key_exists($key, $arrkeys)) { $array[$arrkeys[$key]]['value'][] = $value; } else { $arrkeys[$key] = $i; $array[$i++] = ['key' => $key,'value' => [$value]]; } } unset($arrkeys); --- Добавлено --- Откройте, пожалуйста, секрет использования этой конструкции для решения описанной ТС задачи...