2016-07-15 7 views
-1

Ich habe eine Array, die das Ergebnis einer MySQLi-Abfrage ist.Wie man ein zweidimensionales Array besucht und if-Anweisung darin verwendet - PHP

Das Array-Code ist:

while ($row_Active = mysqli_fetch_assoc($SeqActive)) { 
    $Seq[] = $row_Active; 
} 

Wenn ich das Array echo es hat den richtigen Inhalt, so weiß ich trhat funktioniert.

Ziel:

I durch das Array in einer Schleife muß (unter Verwendung von foreach, glaube ich) so , wenn der Inhalt eines Array-Element enthält, "1", dann echo 1 anderes echo 2.

Wie kann ich den Inhalt jedes Elements lesen, damit dies funktioniert?

$SeqID = array(); 
foreach($Seq as $key => $value) { 
    if($value == 1){ 
    echo "1"; 
    } else { 
    echo "2"; 
    } 
} 

Die Fähigkeit ist nur meine Art zu beschreiben, was ich brauche.

Vielen Dank im Voraus für Ihre Zeit.


Edit:

entdeckte ich, dass SQL-Abfrage eine bidimensional Array wie unten zurückgegeben:

die Ergebnisse der Abfrage:

Array ([0] => Array ([Status] => A [SeqID1] => 1 [SeqID2] => 1 [SeqID3] => [SeqID4] => [SeqID5] => [SeqID6] => [SeqID7] => [SeqID8] => [SeqID9] => [SeqID10] => [SeqID11] => [SeqID12] => [SeqID13] => [SeqID14] => [SeqID15] => [SeqID16] => [SeqID17] => [SeqID18] => [SeqID19] => [SeqID20] => [SeqID21] => [SeqID22] => [SeqID23] => [SeqID24] => [SeqID25] => [SeqID26] => [SeqID27] => [SeqID28] => [SeqID29] => [SeqID30] => [SeqID31] => [SeqID32] => [SeqID33] => [SeqID34] => [SeqID35] => [SeqID36] => [SeqID37] => [SeqID38] => [SeqID39] => [SeqID40] => [SeqID41] => [SeqID42] => [SeqID43] => [SeqID44] => [SeqID45] => [SeqID46] => [SeqID47] =>)) 

Also, was mache ich falsch ?

Vielen Dank für alle Antworten.

Ich habe alle Kommentare onbaord genommen und das ist sehr nah an der Arbeit.

Der gesamte Code erzeugt eine Fragetabelle, jede Frage zeigt eine Schaltfläche an, wenn die Frage bereits beantwortet wurde, zeigt die Frage ein grünes Bild an, und wenn die Frage nicht beantwortet wird, erscheint ein roter Knopf.

Der Code zur Verfügung gestellt funktioniert gut, aber wenn ich es in meinem Arbeitsskript aufnehmen, werden die Fragen nicht angezeigt.

Irgendwelche Ideen, warum die Fragen nicht angezeigt werden.

Ich wollte nicht den ganzen Code von Anfang an in den Post schreiben, weil ich dachte, dass es das Problem trüben könnte.

Der gesamte Code:

<? do { ?> 
    <? $_SESSION['TableID'] = $row_SeqList['TableID'];?> 
    <tr> 
     <td width="71%" class="tablelist"><?php print $row_SeqHead['SeqHeader']; ?></td> 
     <td width="7%" class="tablelist"><?php print $row_SeqHead['TableID']; ?></td> 
     <td width="16%" class="openbutton"> 
     <?php foreach($Seq as $key => $value) { 
      foreach ($value as $val) { 
       if ($val == 1){ ?> 
       <img src="images/completebutton.png" width="72" height="29">    
       <? } else { ?> 
       <a href="table01.php?TableID=<?php echo $row_SeqHead['TableID']; ?>" target="_self"><img src="images/openbutton.png" width="72" height="29"></a> 

     <?php } 
     } 

    }?> 
<?php } while ($row_SeqHead = mysqli_fetch_assoc($SeqHead)); ?> 
+0

Könnten Sie die zeigen, Daten, die Sie von der Abfrage erhalten. – nerdlyist

+2

Fügen Sie eine weitere foreach zu Schleifenzeilen hinzu - 'foreach ($ Seq als $ Zeile) {foreach ($ Zeile als $ key => $ value) {' – splash58

Antwort

1

Sie sollten zweiforeachSchleifen verwenden, um die Elemente Werte zu erhalten.Hier ist dein Beispiel

$SeqID = array(); 
while ($row_Active = mysqli_fetch_assoc($SeqActive)) { 
    $Seq[] = $row_Active; 
} 

$one = 0; 
$two = 0; 
foreach($Seq as $key => $data) { 
    foreach($data as $key_2 => $value) { 
     if($value == 1){ 
      $one++; 
     } else { 
      $two++; 
     } 
    } 
} 
echo "Total records with one : ".$one."<br>"; 
echo "Total records with two : ".$two; 
+0

@nerdlyist, Ich habe die Frage bearbeitet und den Inhalt des Arrays in den Beitrag gestellt – DCJones

+0

Hallo @Rafael Shkembi, die $ row_Active ist gefüllt, siehe nachbearbeiten mit Array-Inhalt. Danke für deine Antwort. – DCJones

+0

Ich habe auch meine Antwort aktualisiert :) –

1

Sie gehen einen anderen foreach-Schleife zu müssen, die verschachtelte foreach-Schleifen genannt wird

hier ist ein Code, den ich schrieb und getestet und funktioniert gut

$one = $two = 0; // empty variables 
foreach($Seq as $key => $value) { 

     foreach ($value as $val) {    
     if ($val == 1) { 
      $one++; 
     }else { 
      $two++; 
     } 
    } 
} 
echo "total number of one's ". $one ."<br>"; 
echo "total number of two's ". $two ."<br>";