用php或javascript将字符串转换成数组

问题描述 投票:0回答:1

在PHPJavascript中,我有下面的字符串,是经过编码的。如何在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

所以我觉得用"& "来分割并不是更好的主意 或者需要做更多的步骤来制作数组。

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.




                    }
                }
javascript php arrays string decode
1个回答
1
投票

我这里尝到两个问题。如果我说的不对,请纠正我。

  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']
}
© www.soinside.com 2019 - 2024. All rights reserved.