在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.
}
}
我这里尝到两个问题。如果我说的不对,请纠正我。
我想你要找的是 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"
}
}
}
如果你像这样在数组上迭代的话
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']
}