строка в массив в php или javascript - PullRequest
0 голосов
/ 28 мая 2020

У меня есть строка ниже в PHP / Javascript, которая закодирована. Как преобразовать эту строку в массив в PHP или javascript?

data%5B0%5D%5BName%5D=Car&data%5B0%5D%5BPrice%5D=101&data%5B1%5D%5BName%5D=Laptop&data%5B1%5D%5BPrice%5D=201

Сначала я попытался расшифровать строку. Затем я попытался разделить ("&"), но результат отличается от того, что я ищу. Javascript:

console.log(decodeURIComponent(data%5B0%5D%5BName%5D=Car&data%5B0%5D%5BPrice%5D=101&data%5B1%5D%5BName%5D=Laptop&data%5B1%5D%5BPrice%5D=201)); 

// Result: data[0][Name]=Car&data[0][Price]=101&data[1][Name]=Laptop&data[1][Price]=201&data[2][Name]=Laptop&data[2][Price]=201

Поэтому я думаю, что разделение на «&» не лучше Идея или необходимость сделать больше шагов для создания массива.

In PHP, я сначала попытался взорвать с помощью «&», а затем снова попытался взорвать с помощью «=», но это дает другой результат.

<code>$mydata = "data%5B0%5D%5BName%5D=Car&data%5B0%5D%5BPrice%5D=101&data%5B1%5D%5BName%5D=Laptop&data%5B1%5D%5BPrice%5D=201";
                foreach ($mydata as $chunk) {
                    $param = explode("=", $chunk);
                    print("<pre>".print_r($param,true)."
"); // выводит первый элемент if ( $ param) {printf ("Значение параметра \"% s \ "равно \"% s \ " \ n ", urldecode ($ param [0]), urldecode ($ param [1])); // Первый этап: Array ([0] => data% 5B0% 5D% 5BName% 5D [1] => Автомобиль ) // Второй раунд: Array ([0] => data% 5B0% 5D% 5BPrice% 5D [1] => 101) $ What_Should_Var_Name ?? = urldecode ($ param [1]); // вводить имя переменной нельзя потому что [1] будет 'Автомобиль', который представляет "Имя", но во втором l oop тот же [1] будет '101', который будет представлять 'Цена'. Поэтому я не знаю, как сохранить это здесь чтобы сделать массив.}}

1 Ответ

1 голос
/ 28 мая 2020

Я пробую здесь два вопроса. Поправьте меня, если я ошибаюсь.

  1. Как декодировать данные в полезный массив
  2. Как использовать массив

1. Как декодировать данные в полезный массив

Я думаю, вы ищете urldecode() и parse_str().

$decodedString = urldecode('data%5B0%5D%5BName%5D=Car&data%5B0%5D%5BPrice%5D=101&data%5B1%5D%5BName%5D=Laptop&data%5B1%5D%5BPrice%5D=201');

// The above code will give you the following string in $decodedString:
data[0][Name]=Car&data[0][Price]=101&data[1][Name]=Laptop&data[1][Price]=20


parse_str($decodedString, $array);

// The above code will give you the following array in $array:
array(1) {
  ["data"]=>
  array(2) {
    [0]=>
    array(2) {
      ["Name"]=>
      string(3) "Car"
      ["Price"]=>
      string(3) "101"
    }
    [1]=>
    array(2) {
      ["Name"]=>
      string(6) "Laptop"
      ["Price"]=>
      string(2) "20"
    }
  }
}

2. Как использовать массив

Если бы вы перебирали массив следующим образом

foreach ($array['data'] as $data) {
    // So you can use $data['Name'] and $data['Price']

    // ITERATION 1:
    // $data will be ['name' => 'Car', 'Price' => '101']

    // ITERATION 2:
    // $data will be ['name' => 'Laptop', 'Price' => '20']
}
...