2015-04-25 218 views
1

我不知道爲什麼結果是返回重複的行。 此代碼嘗試獲取每行顏色數據。PHP循環Foreach +雖然

$n=array(); 
$s=array(); 

我宣佈陣列數據coloumn移動到可變

$i =0; 
$x =0; 
$matkul = 0; 
while ($matkul<$ttlrow){  
     //try to fecth all coloumns data every row. 
      foreach($dom->find('td[style="text-align:left;"]') as $b) { 
       $n[$x]=$b->plaintext; 
       $x++;      
      } 
     //try to show the data before insert to Database 
     $k_mk= $n[0]; 
     $n_mk= $n[1]; 
     echo $k_mk . ' | '; 
     echo $n_mk. ' | '; 
      //try to fecth all coloumns data every row. 
      foreach($dom->find('td[style="text-align:center;"]') as $a) { 
       $s[$i]=$a->plaintext; 
       $i++; 
      } 
     //try to show the data before insert to Database 
     $sks= $s[0]; 
     $grd = $s[1]; 
     $bbt = $s[2]; 
     $nl = $s[3]; 
     $uid = $uid; 
     echo $sks . ' | '; 
     echo $grd. ' | '; 
     echo $nl. '<br>'; 
     /* 
     $sql = "INSERT INTO fokusipk_ks.jadwal (`uid`, `kd_mk`, `kd_sms`, 
     `nm_mk`, `nm_dsn`, `kd_kls`, `hari`, `jam`) 

     VALUES ('$uid', '$mk', '$sms', '$nmk', '$nmd', '$kls', '$hari', 
     '$jam');"; 
      if ($conn->query($sql) === TRUE) { 
       #echo '.'; 
      } 
     */ 
     $matkul++; 
     //refresh the value to re-start fetching from the first coloumn 
     $i=0; 
     $x=0; 
} 


Code | Courses      | W | G | V 

the results something like this: 

TPLB02 | PENGANTAR TEKNOLOGI INFORMASI | 2 | A | 8 

TPLB02 | PENGANTAR TEKNOLOGI INFORMASI | 2 | A | 8 

TPLB02 | PENGANTAR TEKNOLOGI INFORMASI | 2 | A | 8 

TPLB02 | PENGANTAR TEKNOLOGI INFORMASI | 2 | A | 8 

TPLB02 | PENGANTAR TEKNOLOGI INFORMASI | 2 | A | 8 

TPLB02 | PENGANTAR TEKNOLOGI INFORMASI | 2 | A | 8 

TPLB02 | PENGANTAR TEKNOLOGI INFORMASI | 2 | A | 8 

TPLB02 | PENGANTAR TEKNOLOGI INFORMASI | 2 | A | 8 

TPLB02 | PENGANTAR TEKNOLOGI INFORMASI | 2 | A | 8 
+0

我相信'foreach'循環應該在主循環之外,因爲它們不依賴於'$ matkul'。這就像你有一個循環,總是收穫相同的頁面,但只打印第一個元素。 –

+0

$ dom->在while循環的每次迭代中如何得到不同的結果? – Loopo

+0

謝謝,它的工作。和更輕的重量。 –

回答

0

由於您的$dom->find正在位於單while loop你基本上遍歷所有的DOM元素2 foreach loops,回答您的標準(td[...])。那些循環在while循環中沒有依賴關係,所以我會說它效率不高。

此外,您使用的常量鍵爲$s,$n結果,因此您始終會得到相同的結果。

爲了獲得更好的性能和工作解決方案,您應該將這2個foreach循環放在while循環之外(以上)。所以$s$n數組將包含所有需要的元素,並在您的主循環中設置一個計數器並增加它。請注意,爲了獲得2個以下元素,您應該執行下列操作:$s[$i],$s[$i+1]

請確保您檢查$i$i+1是否在陣列的限制範圍內。