2017-01-13 7 views
0

Ich möchte eine Tabelle, die in der ersten Spalte bestehen aus Name aus der Datenbank und auf der zweiten Spalte bestehen aus Wert aus einem Array. das ist, was ichWhile-Schleife innerhalb foreach Schleife in PHP

<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> 

habe ich brauche eine Ausgabe wie

name_a 3
name_b 5
name_c 2
name_d 4
name_e 1

Sie im Voraus danken.

+2

Wie Rajdeep gezeigt hat, brauchen Sie dafür nicht die foreach-Schleife. Zusätzlich möchte ich Ihnen sagen, dass Sie versuchen sollten, mysqli anstelle von mysql zu verwenden, da mysql veraltet ist. Prost – Cashbee

Antwort

2

Sie brauchen das nicht foreach Schleife. Verwenden Sie einfach array_shift() Funktion innerhalb while() Schleife, um jedes Array-Element zu erhalten. So sollte der Code wie folgt sein:

<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> 

Darüber hinaus Ihre Geschäftslogik Arbeit funktioniert nur, wenn die Anzahl der Zeilen in der Tabelle auf die Anzahl der Elemente im Array entspricht. Und wenn das nicht der Fall ist, müssen Sie in Ihrer Abfrage die Klausel LIMIT verwenden.


Nebenbei bemerkt: nicht mysql_* Funktionen verwenden Sie, werden sie als PHP 5.5 als veraltet und werden zusammen in PHP 7.0 entfernt. Verwenden Sie stattdessen mysqli oder pdo. And this is why you shouldn't use mysql_* functions.

+0

danke für die Antwort. aber. Hast du keinen anderen Weg? weil das tatsächliche Array von einem Sortierprozess stammt. wenn ich den array_shift benutze. Das Array-Element kommt zurück, bevor es sortiert ist. Verstehst du, was ich meine? Ich bin nicht gut, wenn es darum geht, Array-Sache .. Entschuldigung für die Störung .. –

+2

Ich glaube nicht, dass ich vollständig verstehe, aber haben Sie versucht, das Array vor der While-Schleife zu sortieren? – Cashbee

+1

@ ゆ に た ど え Wie @Cashbee sagte oben ^, müssen Sie das Array vor der Verwendung in 'while()' Schleife zu sortieren. Oder können Sie zumindest den Code anzeigen, in dem Sie sortieren? –