字符串到 php 或 javascript 中的数组

string to array in php or javascript

我在下面的 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

我尝试先解码字符串。然后我尝试 split("&") 但结果与我看到的不同。 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

所以我认为用“&”分割不是更好的想法或需要做更多的步骤来制作数组。

PHP中,我尝试先按“&”展开,然后再次尝试按“=”展开,但结果不同。

$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)."</pre>"); //prints first element


                    if ($param) {
                        printf("Value for parameter \"%s\" is \"%s\"<br/>\n", urldecode($param[0]), 
                        urldecode($param[1]));

                       //First round:
                        Array
                        (
                         [0] => data%5B0%5D%5BName%5D
                         [1] => Car
                        )
                        //Second round:
                        Array
                        (
                        [0] => data%5B0%5D%5BPrice%5D
                        [1] => 101
                        )
                       $What_Should_Var_Name??  = urldecode($param[1]); 
                      //confuse to put variable name because [1] will be 
                      'Car' which represents "Name", but in second loop, same 
                      [1] will be '101' which will represent 'Price'. So I 
                      don't know how to store that here to make array.




                    }
                }

这里尝尝两道题。如果我错了请纠正我。

  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']
}