我使用urlencode & urldecode通过html表单传递变量。
$info = 'tempId='.$rows['tempID'].'&tempType='.$rows['tempType'].'&dbId='.$rows['ID'];
echo '<input type="hidden" name="rank[]" value="'.urlencode($info).'" >';下面是$rows中的内容
array (size=4)
'ID' => string '110' (length=3)
'tempID' => string '1' (length=1)
'tempType' => string 'temp_first' (length=10)
'pageOrder' => string '0' (length=1)所以$info是
tempId=1&tempType=temp_first&dbId=110但是如果我解码它,它会丢失一个参数。这怎麽可能?
foreach (explode('&', urldecode($list[$i])) as $chunk) {
$param = explode("=", $chunk);
$tempId = urldecode($param[0]); // template id
$tempType = urldecode($param[1]); // Template type
$dbId = urldecode($param[2]); // database ID
var_dump($param);
}输出:
array (size=2)
0 => string 'dbId' (length=4)
1 => string '110' (length=3)有时,数组中甚至有一些不应该在其中的内容,例如,它显示tempType而不是temp_first。只有变量名。
我希望你们能帮助我
发布于 2013-04-29 17:09:46
不需要手动分解和处理字符串,您可以使用parse_str()
parse_str(urldecode($list[$i]), $output);
var_dump($output);将输出:
array
'tempId' => string '1' (length=1)
'tempType' => string 'temp_first' (length=10)
'dbId' => string '110' (length=3)发布于 2013-04-29 17:06:05
尝尝这个
$result=array();
foreach (explode('&', urldecode($list[$i])) as $chunk) {
$param = explode("=", $chunk);
$result[$param[0]]=$param[1];
}
var_dump($result);发布于 2013-04-29 17:07:16
你能试试这个并检查结果吗(虽然我在黑暗中摸索):
//change this <input type="hidden" name="rank[]" value="'.urlencode($info).'" > to
//<input type="hidden" name="urlargs" value="'.urlencode($info).'" >
$values = explode('&',urldecode($_POST['urlargs']));
$arguments = array();
foreach($values as $argument_set){
$data = explode('=',$argument_set);
$arguments[$data[0]] = $data[1];
}
var_dump($arguments);我认为问题出在你处理价值的方式上
https://stackoverflow.com/questions/16274652
复制相似问题