2014-03-03 57 views
0

我使用教程创建我的第一个PHP站点以供参考。我无法理解为什么以下工作原理:PHP while循环。为什么这个工作?

while ($row = mysql_fetch_array($result)){ 
    echo $row[1]. " ".row[2]."<br/>"; 
} 

具体来说,循环如何递增到下一行?

更新: 感谢所有为我提供答案的人,包括那些恳求我加入RTM的人。我的问题不是理解循环如何工作,而是简单地看不到循环如何递增。 答案: 从PHP文档,

mysql_fetch_array:返回对应于所提取的行并移动内部数据指针超前

我现在看到的阵列,一切都很好。

+1

阅读其文档。 –

+0

顺便说一句请使用“mysqli_fetch_array”具体是mysqli。 – les

+0

与c一样,函数mysql_fetch_array按顺序从表中抓取一行,如占位符,并在到达结尾时返回0或false。这个值被赋值给行,但是它也被if语句读取 –

回答

2

您可以重写代码,这相当于:

$row = mysql_fetch_array($result); // fetch and advance 
while ($row !== false) { // compare result against false 
    echo $row[1]. " ".row[2]."<br/>"; 
    $row = mysql_fetch_array($result); // fetch and advance 
} 

的分配产生,然后可以在条件中使用的值,虽然这是一个很好的做法,把括号中的分配办法:

// fetch and advance, compare fetched result against false 
while (($row = mysql_fetch_array($result)) !== false) { 
    echo $row[1]. " ".row[2]."<br/>"; 
} 
+0

还有一种更好的做法,即不将任务分配到条件表达式中。 – ragol

+0

@ragol - 我只是为了我自己的知识而问,为什么不把一个任务放到条件子句中是不是更好的做法?我在许多开源代码中看到过这种模式(特别是在mail()调用中)。它出什么问题了 ? –

+0

@ragol这不完全是通用的,它取决于你希望遵循哪种代码约定。 –

0

的mysql_fetch_array采取$第一个元素结果,那么为$结果有元素这项工作......就像是拿卡从甲板

0

取读ŧ hough PHP While文档。了解mysql_fetch_array()的功能以及它的工作原理可能也很有用。读完后,不要再使用mysql_*函数,因为它们已被弃用。相反,请使用mysqli_*PDO

1

mysql_fetch_array()将获取一个$结果并以$ array的形式保存到$ row中。使用while循环,您的程序将从头到尾循环数组中的数据。

顺便问一下,你的代码应该像

while ($row = mysql_fetch_array($result)){ 
    echo $row['someData1']. " ".row['someData2']."<br/>"; 
} 

如果你想通过指数迭代,那么代码看起来像以下,但它将打印字阵,你将打印结果“那“具体指数。

$indexCounter = 0; 
while ($row = mysql_fetch_array($result)){ 
    echo $row[$indexCounter]."<br/>"; 
} 

希望这会有所帮助!谢谢。