首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的数组以空值开头?

为什么我的数组以空值开头?
EN

Stack Overflow用户
提问于 2012-12-19 20:23:09
回答 6查看 545关注 0票数 12

我不能理解这一点。

当我创建一个数组时,它以一个空值开始。需要在数组中的值从秒开始。

数组:

代码语言:javascript
复制
Array ( 

 [0] => 

 [1] => Value 1 

 [2] => Value 2 

 [3] => Value 3

)

代码:

代码语言:javascript
复制
$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");
do{
    array_push($categories, $category['description']);
}while($category=mysql_fetch_assoc($query2));

如何实现将数组中的第一项设置为值1?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-12-19 20:24:24

这是因为do while循环try while循环

代码语言:javascript
复制
while($category=mysql_fetch_assoc($query2)){
    array_push($categories, $category['description']);
}
票数 21
EN

Stack Overflow用户

发布于 2012-12-19 20:25:26

答案很简单:在读取第一行之前先推入第一个元素。正确的方法是使用前置条件循环:

代码语言:javascript
复制
$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");

while($category=mysql_fetch_assoc($query2)) {
    array_push($categories, $category['description']);
}

并且,请切换到使用PDO。

票数 14
EN

Stack Overflow用户

发布于 2012-12-19 20:30:29

while循环是如何工作的

与常规while循环的主要区别在于,do-while循环的第一次迭代是肯定会运行的(只有在迭代结束时才会检查真值表达式),而它不一定会与常规while循环一起运行(真值表达式会在每次迭代开始时检查,如果它从一开始就计算为FALSE,则循环执行将立即结束)。source

所以在你的程序中,发生了什么,你在读取第一行之前推入了第一个元素。

所以请改用while

wile循环会做什么呢?在流程图中,它将首先检查,然后进入循环体,因此元素在读取第一行后被推入

代码语言:javascript
复制
$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");

while($category=mysql_fetch_assoc($query2)) {
    array_push($categories, $category['description']);
}

便笺

PHP整个ext/mysql扩展提供了所有以mysql_前缀命名的函数,它是officially deprecated as of PHP v5.5.0,将来将被删除。因此请使用PDOMySQLi

好读

  1. The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13952409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档