使用表单传递关联数组的例子
时间:2007-02-17 来源:PHP爱好者
今天从
www.php.net的用户反馈处看到如下警告,讲到通过表单传递的关联数组不能被
each()函数读取,我尝试了如下的操作,没有发现问题,结果完全正确。程序如下
//test1.php
<form action=test2.php method=post>
<input type=hidden name=var[8eccbad8e776e] value="php2000">
<input type=submit value=submit>
</form>
//test2.php
<?
$msg = each($var);
echo $msg[0],$msg[1],$msg['key'],$msg['value'];
?>
//output is
8eccbad8e776ephp20008eccbad8e776ephp2000
原文 - http://www.php.net/manual/ref.array.php
[email protected]
08-Jan-2001 09:52
Be careful if you want to submit a variable as an associative array.
If for some reason you use indexes that begin with a number - for instance some dynamically
display ID number :
<input type="textfield" name="vars[8eccbad8e776e]">
It seems to be a rare case but I needed to code that stuff.
The bug here comes from the fact the browser "urlencodes" the name of the field.
The array is actually transmitted but you can't use the "each()" function on It. However I can
swear you the array is not empty and - that's worse - the correct data is stored at the correct
index (is knew It making 'echo $vars["8ecc..."]').
The less boring solution I found is to put an "_" before any index.
Then you will surely find a way to remove it - using "preg_replace" for instance.
php爱好者站 http://www.phpfans.net 网页制作|网站建设|数据采集.
www.php.net的用户反馈处看到如下警告,讲到通过表单传递的关联数组不能被
each()函数读取,我尝试了如下的操作,没有发现问题,结果完全正确。程序如下
//test1.php
<form action=test2.php method=post>
<input type=hidden name=var[8eccbad8e776e] value="php2000">
<input type=submit value=submit>
</form>
//test2.php
<?
$msg = each($var);
echo $msg[0],$msg[1],$msg['key'],$msg['value'];
?>
//output is
8eccbad8e776ephp20008eccbad8e776ephp2000
原文 - http://www.php.net/manual/ref.array.php
[email protected]
08-Jan-2001 09:52
Be careful if you want to submit a variable as an associative array.
If for some reason you use indexes that begin with a number - for instance some dynamically
display ID number :
<input type="textfield" name="vars[8eccbad8e776e]">
It seems to be a rare case but I needed to code that stuff.
The bug here comes from the fact the browser "urlencodes" the name of the field.
The array is actually transmitted but you can't use the "each()" function on It. However I can
swear you the array is not empty and - that's worse - the correct data is stored at the correct
index (is knew It making 'echo $vars["8ecc..."]').
The less boring solution I found is to put an "_" before any index.
Then you will surely find a way to remove it - using "preg_replace" for instance.
php爱好者站 http://www.phpfans.net 网页制作|网站建设|数据采集.
相关阅读 更多 +