![](/img/trans.png)
[英]Why would it display Undefined offset: 0 error for my PHP associative array?
[英]Why does my php drop down form result in an Undefined offset
请您检查一下这段代码,看看为什么它返回一个未定义的偏移量:以及如何解决。
options.php
<?php
$options = array();
$options["PC 1"] = array("year"=>"2000","colour"=>"blue");
$options["PC 2"] = array("year"=>"2003","colour"=>"pink");
$options["PC 3"] = array("year"=>"2006","colour"=>"orange");
?>
index.php
<html>
<body>
<form name="input" action="test.php" method="post">
Device Name: <?php
include("options.php");
echo '<select name="option">';
foreach($options as $name => $values)
{ echo '<option value="' .$name .'">' .$name .'</option>';
}
echo '</select>';
?>
<input type="submit" value="Submit" />
</form>
</body>
</html>
test.php
<?php
include("options.php");
$chosenValue = $_POST['option'];
list($year,$colour) = $options[$chosenValue]; ---- here is the error line
echo $year;
echo $colour;
?>
谢谢
我认为这是因为数组 $options
的键在其中具有空格。这在PHP中完全有效/合法,但是在HTML中,提交表单时不喜欢它。
尝试将它们更改为 $options["PC1"]
,依此类推,看看是否可以解决。
编辑 :从PHP手册 list() only works on numerical arrays and assumes the numerical indices start at 0.
尝试将test.php
更改为:
<?php
include("options.php");
$chosenValue = $_POST['option'];
$year = $options[$chosenValue]['year'];
$colour = $options[$chosenValue]['colour'];
echo $year;
echo $colour;
?>
在test.php
更改访问年份和颜色的方式, list()
似乎不适用于非数字索引。 php文档中由用户提供的注释之一适合您的需求
http://www.php.net/manual/zh/function.list.php#53420
或者只是去
$data = &$options[$chosenValue];
echo $data['year']; // etc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.