1

$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 循环的第二种方法时,页面会加载,并且值确实会出现。我很困惑为什么会这样。任何帮助都会很棒,谢谢。

4

3 回答 3

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
}
于 2012-06-20T15:50:48.430 回答
1

如果你想使用数组引用方法,试试这个:

for($i = 0; $i < count($papers); $i++) {
    echo '<option value="' . $papers[$i] . '">' . $papers[$i] . '</option>';
}

count() 函数将返回数组的长度,正如您所说,每次运行它时可能会有所不同。

于 2012-06-20T15:50:23.903 回答
0

打开错误报告

error_reporting(E_ALL | E_STRICT);
init_set('display_errors', 'on');

并尝试调试:

print_r($papers);

并查看数组 $papers 的结构

于 2012-06-20T15:52:42.117 回答