Home > Backend Development > PHP Tutorial > php foreach循环问题

php foreach循环问题

WBOY
Release: 2016-06-23 13:49:55
Original
1114 people have browsed it

本人是做C#的,闲的时候学学php,可是老是出现问题,比如foreach循环,明明用mysql_fetch_array读取

到了数组,可是foreach循环结果不对,但是while循环可以,请高手指点迷津,以下是简单的代码
$query = "SELECT * FROM mytable";
$result = mysql_query($query);
$rows=mysql_fetch_array($result);
foreach($rows as $val)
{
   姓名:;
   年龄:;
}


回复讨论(解决方案)

mysql_fetch_array 返回的是一维数组,那样遍历自然是不对的。你print_r($rows); 看看就知道了。

mysql_fetch_array 返回的是一维数组,那样遍历自然是不对的。你print_r($rows); 看看就知道了。



这样啊,foreach读取数组还分一维和二维数组吗?

foreach 是对数组的第一维进行循环的
你 $rows=mysql_fetch_array($result); 后 $rows 就是一个一维数组
foreach($rows as $val) 中 $val 是值,而不是数组。不存在 $val['name'] 等

猜测你是想这样:

while($row=mysql_fetch_array($result)){   $rows[] = $row;}foreach($rows as $val){   姓名:<?php echo $val['name'];?>;   年龄:<?php echo $val['age'];?>;}
Copy after login
Copy after login

$rows=mysql_fetch_array($result);
返回的是一维数组吧,不是二维数组,所以这样遍历出问题了

foreach 是对数组的第一维进行循环的
你 $rows=mysql_fetch_array($result); 后 $rows 就是一个一维数组
foreach($rows as $val) 中 $val 是值,而不是数组。不存在 $val['name'] 等



哦哦,谢谢,我又明白了一些

猜测你是想这样:

while($row=mysql_fetch_array($result)){   $rows[] = $row;}foreach($rows as $val){   姓名:<?php echo $val['name'];?>;   年龄:<?php echo $val['age'];?>;}
Copy after login
Copy after login



我想用foreach循环出数据,用foreach还要用while两个循环啊,麻烦

foreach 只能循环数组
你可以用 for 循环

$result = mysql_query($query);for(; $val=mysql_fetch_array($result); ){ ?>   姓名:<?php echo $val['name'];?>;   年龄:<?php echo $val['age'];?>;<?php }
Copy after login
Copy after login
Copy after login

foreach 只能循环数组
你可以用 for 循环

$result = mysql_query($query);for(; $val=mysql_fetch_array($result); ){ ?>   姓名:<?php echo $val['name'];?>;   年龄:<?php echo $val['age'];?>;<?php }
Copy after login
Copy after login
Copy after login


那就是while了。

foreach 只能循环数组
你可以用 for 循环

$result = mysql_query($query);for(; $val=mysql_fetch_array($result); ){ ?>   姓名:<?php echo $val['name'];?>;   年龄:<?php echo $val['age'];?>;<?php }
Copy after login
Copy after login
Copy after login


感谢您的指导,我懂了,这个问题困扰了好久呢,哈哈

$rows=mysql_fetch_array($result); 只拿到一行??,foreach只是循??一行??的每一?字段?容,?不是循?每一???。

所以mysql_fetch_array($result); 必?放在循??中,才能?取到所有??。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template