有人可以帮助我理解为什么我无法在条件语句或数组搜索中跟踪数组的第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>';}
无法追踪它
提前致谢=)
答案 0 :(得分:3)
PHP中的数组使用基于0的索引。第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。
答案 1 :(得分:3)
尝试
for($i=0;$i<=59;$i++)
如果你说&lt; 59它将访问第58个元素而不是第59个元素。
答案 2 :(得分:1)
请检查数组字符串Bowler string之后是否有空格([59] =&gt; string(8)“Bowler”)