PHP Foreach问题

时间:2012-06-20 15:45:06

标签: php arrays foreach

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

3 个答案:

答案 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的结构