2013-11-21 30 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