2012-02-23 20 views
-1

有人可以幫助我理解爲什麼我無法在條件語句或數組搜索中跟蹤數組的第59個元素,而當我打印數組內容時它顯示爲第59個元素。數組元素沒有被條件語句跟蹤,但在打印時出現

<?php 
//libxml_use_internal_errors(true);error_reporting(0); 
ob_start(); 
$url = 'http://m.cricbuzz.com/cricket-archive/scorecard/10777/1'; 
$dom = new DOMDocument; 
@$dom->loadHTMLFile($url); 
$tds = $dom->getElementsByTagName('td'); 
foreach ($tds as $td) { 
    echo $td->nodeValue, PHP_EOL; 

} 
$page = ob_get_contents(); 
ob_end_flush(); 
$fp = fopen("output.html","w"); 
fwrite($fp,$page); 
fclose($fp); 

$content = file('output.html'); 
//First line: $content[0]; 
echo $content[59] .'<br><br>'; 
var_dump($content); 
$batsmen1=array();$bowlers1=array(); 
$x=sizeof($content); 
//echo "size of array = ".$x."<br>"; 

$d=array_search('Bowler',$content);echo '<br>'.$d; 
if(in_array("C Gayle", $content)){echo 'found<br>';} else{echo 'ille<br>';} 
$con=array(); 
for($i=0;$i<59;$i++) 
{ 
if($content[$i]<>"Bowler") 
{ 
array_push($batsmen1, $content[$i]); 
//echo 'if<br>'; 
//echo $content[$i]; 
$con[$i]=$content[$i]; 
echo $con[$i]; 
} 
elseif($content[$i]=="Bowler"){ 
echo 'else'; 
} 
} 
//var_dump($batsmen1); 


?> 

我的意思是 echo array_search('Bowler',$content);...elseif($content[$i]=="Bowler")...if(in_array("C Gayle", $content)){echo 'found<br>';} else{echo 'ille<br>';} 是不能追蹤它提前

感謝=)在PHP中使用基於0的索引

+0

第59元件是投球手 – krishna 2012-02-23 05:50:56

+0

問題不是在陣列元件的位置因爲我已經檢查過它直到100.,我的意思是......我已經在問題和'echo $ content [59]中清楚地說過了。

';'正在打印該元素 – krishna 2012-02-23 06:25:52

+0

** update ** $ pieces = explode(「Bowler」,file_get_contents('output.html')); $ zaq = explode(「\ n」,$ pieces [0]); foreach($ zaq as $ value){echo'next elemnt is ..'。$ value。'

'; } echo array_search('C Gayle',$ zaq)。'hmmmmmmm'; if(in_array(「C Gayle」,$ zaq)){echo「C Gayle」; } else {echo'trash';}仍然是朋友的同樣問題,'foreach'能夠打印'$ zaq'值但不打包查找該'ie C Gayle'的第五個元素(從零開始),但是我可以通過echo'zaq [5];' – krishna 2012-02-24 07:03:15

回答

3

陣列。第59個元素由[58]訪問,而不是[59]。所以如果echo $content[59]的確回顯「Bowler」,那麼Bowler就是第60個元素,而不是第59個元素。

這意味着:

echo $content[59] .'<br><br>'; 

和:

for($i=0;$i<59;$i++) 

不完全兼容。你for循環應該去,直到$i < 60,而不是59

+0

先生,我已經使用了所有可能的排列組合。我的問題是我無法通過條件語句來追蹤元素「投球手」,我可以在打印時看到它。 – krishna 2012-02-23 06:00:30

+0

'echo $ content [59]'。

';'打印元素'bowler',但無法通過條件語句檢測到它。我需要的是製作兩個陣列,其中一個應該包含擊球手和他們的分數(4s,6s,得分avg)和投球手進入另一個(上傳,未婚,經濟,小門..) – krishna 2012-02-23 06:04:18

+0

'echo array_search('Bowler',$內容); ... elseif($ content [$ i] ==「Bowler」)... if(in_array(「C Gayle」,$ content)){echo'
';} else {echo'ille
';}'無法跟蹤它 – krishna 2012-02-23 06:10:46

3

嘗試

for($i=0;$i<=59;$i++) 

如果你說< 59它將訪問,直到第58個元素,而不是59位。

+0

先生,我使用了所有可能的排列組合。我的問題是我無法通過條件語句來追蹤元素「投球手」,我可以在打印時看到它。 echo $ content [59]。'

';打印元素'投球手',但無法通過條件語句檢測到它。我需要的是製作兩個陣列,其中一個應該包含擊球手和他們的得分(4s,6s,得分avg)和投球手進入另一個(上,女,經濟,小門..) – krishna 2012-02-23 06:05:34

+0

'echo array_search('Bowler',$內容); ... elseif($ content [$ i] ==「Bowler」)... if(in_array(「C Gayle」,$ content)){echo'
';} else {echo'ille
';}'無法跟蹤它 – krishna 2012-02-23 06:11:22

1

請檢查陣列串有Bowler的字符串後空白空間([59] =>串(8)「保齡球」)

+0

是的,在某些行有一些空白字符串,但它對我無關緊要 – krishna 2012-02-23 11:08:52