我无法绕过这一个。
当我创建一个数组时,它以空值开头。需要在数组中的值从第二个开始。
阵列:
Array (
[0] =>
[1] => Value 1
[2] => Value 2
[3] => Value 3
)
代码:
$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");
do{
array_push($categories, $category['description']);
}while($category=mysql_fetch_assoc($query2));
如何让数组中的第一项成为Value 1?
答案 0 :(得分:21)
这是因为while while循环尝试while循环
while($category=mysql_fetch_assoc($query2)){
array_push($categories, $category['description']);
}
答案 1 :(得分:14)
答案非常简单:在阅读第一行之前,您正在推送第一个元素。正确的做法是使用前置条件循环:
$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");
while($category=mysql_fetch_assoc($query2)) {
array_push($categories, $category['description']);
}
并且,请切换到使用PDO。
答案 2 :(得分:12)
while循环如何工作
与常规while循环的主要区别在于do-while循环的第一次迭代保证运行(真值表达式仅在迭代结束时检查),而它可能不一定以常规方式运行循环(在每次迭代开始时检查真值表达式,如果从开始就评估为FALSE,则循环执行将立即结束)。source
所以在你的程序中发生的事情是你在读第一行之前推送第一个元素。
所以请改用
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_的所有函数)为officially deprecated as of PHP v5.5.0,将来会被删除。因此,请使用PDO
或MySQLi
好读
答案 3 :(得分:5)
因为你应该使用while循环而不是do-while循环。
while($category = mysql_fetch_assoc($query2)) {
array_push($categories, $category['description']);
}
在代码中,而不是在循环的第一次迭代中(第一次进入do块时),未设置$category
,因此将第一个数组值设置为空。
答案 4 :(得分:5)
首先将值(array_push()
)写入数组,然后实际获取值(mysql_fetch_assoc()
)。
您需要首先获取值,然后将其放入数组中!
$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");
while(($category = mysql_fetch_assoc($query2)) !=== false) {
array_push($categories, $category['description']);
}
答案 5 :(得分:1)
尝试这样做:
$categories = array();
$query2 = mysql_query('SELECT * FROM books_categories');
while($r = mysql_fetch_array($query2)){
$categories[] = $r['description'];
}