所以我有一个来自数据库的数组$papers
。数组的大小可以根据改变数据库的人的意愿而改变。
我想如果我做了类似的事情:
foreach($papers as $paper) {
echo '<option value="' . $paper . '">' . $paper . '</option>';
}
我可以在表单中获得动态列表。但是,出于某种原因,当我尝试这个时,网页只是空白。显然我可以做类似的事情:
for($i = 0; $i < SOME_NUMBER; $i++) {
echo '<option value="' . $papers[$i] . '">' . $papers[$i] . '</option>';
}
但是由于数组的大小是可变的,它似乎不是一个可行的选择。 此外,当我使用简单的for循环的第二种方法时,页面加载,并且值确实出现了。我很困惑为什么会这样。任何帮助都会很棒,谢谢。
答案 0 :(得分:2)
您可以像这样修改foreach
循环
foreach($papers as $key => $value) {
echo '<option value="' . $key . '">' . $value . '</option>';
}
其中$key
持有索引,$value
持有数组的实际值
我不确定你的$papper
数组中有哪些数据,但我猜你也可以这样做
foreach($papers as $paper) {
echo '<option value="' . $paper['your_db_field_name'] . '">' . $paper['your_db_field_name'] . '</option>';
}
使用简单for loop
,您可以使用sizeof()
,如下所示
for($i = 1 ; $i <= sizeof($pappers) ; $i++){
//your logic
}
答案 1 :(得分:1)
如果要使用数组引用方法,请尝试以下方法:
for($i = 0; $i < count($papers); $i++) {
echo '<option value="' . $papers[$i] . '">' . $papers[$i] . '</option>';
}
count()函数将返回数组的长度,正如您所说,每次运行它时可能会有所不同。
答案 2 :(得分:0)
启用错误报告
error_reporting(E_ALL | E_STRICT);
init_set('display_errors', 'on');
并尝试使用:
进行调试print_r($papers);
并查看数组$ papers的结构