Вопрос

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

101=1&2020=2&303=3

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

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

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

Это было полезно?

Решение

$input = "101=1&2020=2&303=3";
$output = array();
$exp = explode('&',$input);
foreach($exp as $e){
   $pair = explode("=",$e);
   $output[$pair[0]] = $pair[1];
}

Другие советы

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

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

$myArray = array();
parse_str('101=1&2020=2&303=3', $myArray);
print_r($myArray);

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

<?php
$str = "101=1&2020=2&303=3";
$VAR = array();
foreach(explode('&', $str) AS $pair)
{
    list($key, $value) = each(explode('=', $pair));
    $VAR[$key] = $value;
}
?>
parse_str($query_string, $array_to_hold_values);

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top