2016-07-15 23 views
-1

我有一個數組這是MySQLi查詢的結果。如何訪問一個二維數組並使用if語句 - PHP

數組代碼:

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

如果我回聲出陣列具有正確的內容,所以我知道trhat工作。

目標:

我通過陣列需要循環(使用的foreach,我想),所以如果數組元素的內容包含「1」,則其他echo 1echo 2

如何讀取每個元素的內容以使其工作?

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

能夠只是我的方式來描述我需要什麼。

非常感謝您的時間。


編輯:

我發現,SQL查詢返回一個二維數組如下:

查詢的結果:

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] =>)) 

所以我在做什麼錯?

非常感謝所有的答覆。

我已經採取了所有評論onbaord,這是非常接近工作。

整個代碼產生一個問題表,每個問題顯示一個按鈕,如果問題已經回答了,問題顯示一個綠色圖像,如果問題沒有得到回答,則顯示一個紅色按鈕。

提供的代碼工作得很好,但是當我將它包含在我的工作腳本中時,問題不會顯示出來。

關於爲什麼不顯示問題的任何想法。

我不想從一開始就把所有的代碼放到帖子裏,因爲我認爲它可能會讓問題變得很糟糕。

整個代碼:

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

你能顯示代碼您從查詢中獲得的數據。 – nerdlyist

+2

添加多一個的foreach循環行 - '的foreach($ SEQ如$行){的foreach($行作爲關鍵$ => $值){' – splash58

回答

1

應該使用兩個foreach得到元素的值。這裏就是你們的榜樣

$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,我已編輯的問題,並置於所述陣列的內容在後 – DCJones

+0

嗨@Rafael Shkembi,$ row_Active已填充,請參閱具有數組內容的帖子編輯。感謝您的回覆。 – DCJones

+0

我奧斯陸更新我的答案:) –

1

你會需要另一個foreach循環被稱爲嵌套的foreach循環

這裏是我寫的和測試,工作正常

$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>";