2012-02-23 48 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