Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中foreach循环内的while循环_Php_Loops_Foreach_While Loop - Fatal编程技术网

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)。另外,确保在
循环时在
内部使用此选项。