请你检查一下这段代码,看看为什么它返回一个未定义的偏移量:以及如何修复它。
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;
?>
由于
答案 0 :(得分:0)
我认为这是因为数组 $options
中的键有空格。这在PHP中完全有效/合法,但在HTML中,提交表单时它不喜欢它。
尝试将它们更改为 $options["PC1"]
,依此类推,看看是否修复了它。
修改:来自PHP manual - 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;
?>
答案 1 :(得分:0)
更改test.php
中访问年份和颜色的方式,list()
似乎不适用于非数字索引。 php文档中用户提供的一条评论符合您的需求
http://www.php.net/manual/en/function.list.php#53420
或者只是去
$data = &$options[$chosenValue];
echo $data['year']; // etc