2013-11-21 54 views
0

我有這個循環遍歷數組並打印出來。問題是讓我們說在這個數組中有8個元素。如果第5個陣列不同意這個$ scheduleFirstLine [10] [$ sfl] == 1這個時候切斷。它不會繼續第6,7和8項。我如何解決這個問題?同時切斷頁面上的陣列

while ($scheduleFirstLine[10][$sfl] == 1) 
     { 
      echo ' 
      <tr> 
       <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';"> 
        '.$scheduleFirstLine[1][$sfl].'<br />'.$scheduleSecondLine[1][$sfl].'</td> 
       <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';"> 
        '.$scheduleFirstLine[2][$sfl].'<br />'.$scheduleSecondLine[2][$sfl].' </td> 
       <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';"> 
        '.$scheduleFirstLine[3][$sfl].'<br />'.$scheduleSecondLine[3][$sfl].' </td> 
       <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';"> 
        '.$scheduleFirstLine[4][$sfl].'<br />'.$scheduleSecondLine[4][$sfl].' </td> 
       <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';"> 
        '.$scheduleFirstLine[5][$sfl].'<br />'.$scheduleSecondLine[5][$sfl].' </td> 
       <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';"> 
        '.$scheduleFirstLine[6][$sfl].'<br />'.$scheduleSecondLine[6][$sfl].' </td> 
       <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';"> 
        '.$scheduleFirstLine[7][$sfl].'<br />'.$scheduleSecondLine[7][$sfl].' </td>    
      </tr> 
      '; 
      $sfl++; 
     } 
+0

您應該使用for循環並執行if else語句。 – putvande

回答

3

改變你的while條件並在循環中使用if。

$max = count($scheduleFirstLine[10]); 
$sfl = 0; 
while ($sfl < $max) { 
    if ($scheduleFirstLine[10][$sfl] != 1) 
     continue; // ignore these values 
    // rest of the code 
} 

我也建議改變你的陣列的結構。你是這樣的:

Array(
    Array(// attribute 1 
     attribute 1 of 1st element, 
     attribute 1 of 2nd element, 
    ) 
    Array(// attribute 2 
     attribute 2 of 1st element, 
     attribute 2 of 2nd element, 
    ) 
    ... 
) 

而是分散到所有數值的元素,存儲屬於一個元素這樣在一起的所有屬性:

Array(
    Array(// 1st element 
     attribute 1, 
     attribute 2, 
    ) 
    Array(// 2nd element 
     attribute 1, 
     attribute 2, 
    ) 
    ... 
) 

然後,您可以使用下面的代碼:

foreach ($array as $element) { 
    if ($element[10] != 1) 
     continue; 

    echo '...'.$element[8].'...'.$element[1].'..';//etc. 
} 

哪個更好理解和修改將來,因爲正如我所說,屬性現在屬於一個元素(並存儲在一起!)

+0

非常感謝,因爲我有三個不同的數組,並且對我來說似乎非常複雜,因此我將解決我現在擁有的所有問題,謝謝! – Extelliqent

+0

三個數組:$ scheduleFirstLine = simple_fields_get_post_group_values(get_the_id(),「Schedule First Line」,false,1); $ scheduleSecondLine = simple_fields_get_post_group_values(get_the_id(),「Schedule Second Line」,false,1); \t \t $ schedulePriceCodes = simple_fields_get_post_group_values(get_the_id(),「Schedule Price Codes」,false,1); – Extelliqent