PHP中foreach循环内的while循环
我想制作一个表,第一列由数据库中的名称组成,第二列由数组中的值组成。 这就是我所拥有的PHP中foreach循环内的while循环,php,loops,foreach,while-loop,Php,Loops,Foreach,While Loop,我想制作一个表,第一列由数据库中的名称组成,第二列由数组中的值组成。 这就是我所拥有的 <table> <tr> <?php $arr=array(3,5,2,4,1); $name= mysql_query("SELECT name FROM table") foreach ($arr as $rs){
<table>
<tr>
<?php $arr=array(3,5,2,4,1);
$name= mysql_query("SELECT name FROM table")
foreach ($arr as $rs){
while($n=mysql_fetch_array($name)){ ?>
<td><?=$n['name']?></td>
<td><?=$rs?></td>
</tr>
<?php } } ?>
</table>
我需要像这样的输出
姓名a 3姓名b 5
姓名c 2
姓名d 4
姓名e 1
提前感谢您。您不需要使用
foreach
循环。只需在while()
循环中使用函数即可获得每个数组元素。因此,您的代码应该如下所示:
<table>
<tr>
<?php
$arr=array(3,5,2,4,1);
$name= mysql_query("SELECT name FROM table")
while($n=mysql_fetch_array($name)){
$rs = array_shift($arr);
?>
<td><?=$n['name']?></td>
<td><?=$rs?></td>
</tr>
<?php
}
?>
</table>
此外,只有当表中的行数等于数组中的元素数时,业务逻辑工作才能正常工作。如果不是这样,那么您需要在查询中使用LIMIT
子句
旁注:不要使用
mysql.*
函数,它们从PHP5.5开始就被弃用,在PHP7.0中被完全删除。使用或代替 您不需要这个foreach
循环。只需在while()
循环中使用函数即可获得每个数组元素。因此,您的代码应该如下所示:
<table>
<tr>
<?php
$arr=array(3,5,2,4,1);
$name= mysql_query("SELECT name FROM table")
while($n=mysql_fetch_array($name)){
$rs = array_shift($arr);
?>
<td><?=$n['name']?></td>
<td><?=$rs?></td>
</tr>
<?php
}
?>
</table>
此外,只有当表中的行数等于数组中的元素数时,业务逻辑工作才能正常工作。如果不是这样,那么您需要在查询中使用LIMIT
子句
旁注:不要使用
mysql.*
函数,它们从PHP5.5开始就被弃用,在PHP7.0中被完全删除。使用或代替 正如Rajdeep所示,您不需要foreach循环来实现这一点。除此之外,我想告诉您,您应该尝试使用mysqli而不是mysql,因为mysql已经不推荐使用了。正如Rajdeep所展示的那样,您不需要foreach循环来实现这一点。除此之外,我想告诉您,您应该尝试使用mysqli而不是mysql,因为mysql已经不推荐使用了。谢谢你的回答。但是你没有别的办法吗?因为实际数组来自排序过程。当我使用数组移位时。数组元素在排序之前返回到。。你明白我什么意思吗?我在阵列方面做得不好。。很抱歉打扰您。我不认为我完全理解,但是您是否尝试过在while循环之前对数组进行排序@ゆにたどうえ 正如@Cashbee在上面所说的^,在while()循环中使用数组之前,需要对数组进行排序。或者你能不能至少显示一下你在哪里排序的代码。@Cashbee这是我昨天的问题,$arr来自那里。。当我使用array_shit()时,我得到了原始数组@ゆにたどうえ 这可能是因为您在$original
数组上应用了array\u shift()
函数,而不是在$rank
数组上。正确的语句如下:$rs=array\u shift($rank)代码>。另外,请确保在循环时在内部使用此选项。谢谢您的回答。但是你没有别的办法吗?因为实际数组来自排序过程。当我使用数组移位时。数组元素在排序之前返回到。。你明白我什么意思吗?我在阵列方面做得不好。。很抱歉打扰您。我不认为我完全理解,但是您是否尝试过在while循环之前对数组进行排序@ゆにたどうえ 正如@Cashbee在上面所说的^,在while()循环中使用数组之前,需要对数组进行排序。或者你能不能至少显示一下你在哪里排序的代码。@Cashbee这是我昨天的问题,$arr来自那里。。当我使用array_shit()时,我得到了原始数组@ゆにたどうえ 这可能是因为您在$original
数组上应用了array\u shift()
函数,而不是在$rank
数组上。正确的语句如下:$rs=array\u shift($rank)代码>。另外,确保在循环时在内部使用此选项。