Массив строки в следующем формате? - PullRequest
0 голосов
/ 30 октября 2009

Как я могу массивировать строку в формате, который делает $ _POST ... вроде, ну, у меня есть такой формат:

101=1&2020=2&303=3

(Включите ваше удивление, это результат jQuery Sortable Serialize ... Я хочу выполнить инструкцию SQL, чтобы обновить поле со ПРАВОЙ стороной знака =, где его левая сторона знака равенства? Я знаю SQL для этого, но я хотел поместить его в формат, в котором я мог бы использовать foreach ($ VAR as $ key => $ value) и построить SQL-оператор из этого .. поскольку я не знаю, сколько 101 = 1 там будет?

Я просто хочу разобрать это так, чтобы $ key = 101 и $ value = 1

Звучит запутанно;) Большое спасибо в продвинутом !!

Ответы [ 6 ]

5 голосов
/ 30 октября 2009

См. Функцию parse_str.

3 голосов
/ 30 октября 2009

Это не самое интуитивно понятное имя функции в PHP, но функция, которую вы ищете: parse_str () . Вы можете использовать это так:

$myArray = array();
parse_str('101=1&2020=2&303=3', $myArray);
print_r($myArray);
1 голос
/ 30 октября 2009
parse_str($query_string, $array_to_hold_values);
1 голос
/ 30 октября 2009

Одно быстрое и грязное решение:

<?php
$str = "101=1&2020=2&303=3";
$VAR = array();
foreach(explode('&', $str) AS $pair)
{
    list($key, $value) = each(explode('=', $pair));
    $VAR[$key] = $value;
}
?>
0 голосов
/ 30 октября 2009
$input = "101=1&2020=2&303=3";
$output = array();
$exp = explode('&',$input);
foreach($exp as $e){
   $pair = explode("=",$e);
   $output[$pair[0]] = $pair[1];
}
0 голосов
/ 30 октября 2009

Разнесите по &, чтобы получить массив, содержащий [101 = 1, 2020 = 2, 303 = 3], затем для каждого элемента, разделите на = и вставьте пару ключ / значение в новый массив.

...