Php 为什么我的数组以空值开始?
我不能把我的头绕在这个上面 当我创建一个数组时,它以一个空值开始。数组中需要的值以秒开始 数组:Php 为什么我的数组以空值开始?,php,mysql,arrays,Php,Mysql,Arrays,我不能把我的头绕在这个上面 当我创建一个数组时,它以一个空值开始。数组中需要的值以秒开始 数组: Array ( [0] => [1] => Value 1 [2] => Value 2 [3] => Value 3 ) 代码: 如何将数组中的第一项设为值1?这是因为执行while循环try while循环 while($category=mysql_fetch_assoc($query2)){ array_push($categori
Array (
[0] =>
[1] => Value 1
[2] => Value 2
[3] => Value 3
)
代码:
如何将数组中的第一项设为值1?这是因为执行while循环try while循环
while($category=mysql_fetch_assoc($query2)){
array_push($categories, $category['description']);
}
因为您应该使用while循环而不是do-while循环
while($category = mysql_fetch_assoc($query2)) {
array_push($categories, $category['description']);
}
在循环的第一次迭代中(第一次进入do块时),代码中未设置
$category
,因此将第一个数组值设置为空。请尝试这样做:
$categories = array();
$query2 = mysql_query('SELECT * FROM books_categories');
while($r = mysql_fetch_array($query2)){
$categories[] = $r['description'];
}
答案很简单:在读取第一行之前,您正在按第一个元素。正确的方法是使用前置条件循环:
$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");
while($category=mysql_fetch_assoc($query2)) {
array_push($categories, $category['description']);
}
并且,请切换到使用PDO。您首先将值(array\u push()
)写入数组,然后实际获取值(mysql\u fetch\u assoc()
)
您需要首先获取值,然后将其放入数组中
$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");
while(($category = mysql_fetch_assoc($query2)) !=== false) {
array_push($categories, $category['description']);
}
while循环是如何工作的 与常规while循环的主要区别在于,do while循环的第一次迭代保证运行(仅在迭代结束时检查真值表达式),而它不一定与常规while循环一起运行(在每次迭代开始时检查真值表达式,如果它从一开始就计算为FALSE,则循环执行将立即结束) 因此,在程序中发生了什么,在读取第一行之前,您正在按第一个元素 所以用while代替 wile循环将做什么?在流程图中,它将首先检查,然后进入循环体,所以在读取第一行之后,元素被推送
$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");
while($category=mysql_fetch_assoc($query2)) {
array_push($categories, $category['description']);
}
注意
ext/mysql
PHP扩展提供了所有以前缀mysql\uu命名的函数,现在已经并将在将来删除。因此请使用PDO
或MySQLi
您是最快的,速度太快了。尽管建议您这样做:
while(($category=mysql\u fetch\u assoc($query2))!==false)
。这将确保它不会在查询出错或没有行时崩溃。@Rune您的!==false
位不是必需的;如果它等于false,它将与答案中的代码一起退出循环,因为$category
将设置为false,这将在循环时终止@SDC,这取决于您的配置。在我的Web主机上,当没有行且我没有使用!==false时,它会出错。@Rune-请详细说明。我支持我之前的评论,即while循环应该在没有它的情况下退出,但我想知道您有什么配置会导致这种行为,以及它发生了什么错误我想你应该打开错误报告,看看有什么问题。@AlvinWong-这里不会有任何错误;这是一个逻辑问题,而不是语法或查询问题。@mrslipyFist-如果你想知道为什么一半的答案告诉你停止使用mysql\u xx()
函数,这是因为它们已被弃用,不推荐使用。有关详细信息和如何处理,请参阅。@SDC OK,你赢了。这将是一个通知,而不是错误。最佳答案。它有一个流程图,一个文本说明,它提到了API的弃用…你还需要什么?@mauris-这里有人不喜欢我看到的空格:-)虽然我删除了3个空格,但我为缩进添加了4个其他空格。因为-3+4=1,你可以说我仍然喜欢空格。@maurius我同意你的等式并接受你的答案。你现在可以飞走了:D
$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");
while($category=mysql_fetch_assoc($query2)) {
array_push($categories, $category['description']);
}