繁体   English   中英

为什么我的php下拉表单会导致未定义的偏移量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM