문제 설명: foreach는 조건에 맞는 콘텐츠를 찾기 위해 2차원 배열을 반복하고 이를 새로운 2차원 배열로 재구성합니다. 얻은 디지털 문자열은 숫자와 비교되며 비교할 수 없습니다. 디지털 문자를 int로 변환해 보세요. 입력하면 모든 결과가 0 이 됩니다. (다음 코드는 직접 실행할 수 있습니다.)
//创建curl资源 $ch=curl_init(); //设置url和对应项 curl_setopt($ch, CURLOPT_URL, "http://match.sports.sina.com.cn/football/csl/opta_rank.php?item=shoot&year=2014&lid=8&type=1&dpc=1"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //以文件形式返回而不是直接输出 $data=curl_exec($ch); $my_file=fopen("shoot.html",'w') or die('no file'); fwrite($my_file, $data); fclose($my_file); curl_close($ch); $my_file=fopen("shoot.html",'r'); $res= fread($my_file,filesize("shoot.html")); fclose($my_file); //步骤2获取table内容转为数组 $str1 = preg_replace("/<a[^>]*>/","", $res); $str2 = preg_replace("/<\/a>/","", $str1); preg_match('/<table[^>]*? class="tab01">(.*?)<\/table>/s',$str2,$match); preg_match_all('/<td.*?>.*?<\/td>/i',$match[0],$e1); foreach ($e1[0] as $k=>$v){ $shoot_arr[ceil(($k+1)/8)-1][]=$v; } shuffle($shoot_arr); //随机排序 $left_10to50_arr=array(); //var_dump($shoot_arr); foreach($shoot_arr as $keys=>$vals){ // $leftfoot=$shoot_arr[$keys][4]; echo '<br/>'; var_dump($leftfoot); echo '<br/>'; var_dump((int)$leftfoot); //强制转换为整型 数据变成0 //获取满足条件的数据重组数组 if($leftfoot >= 10 && $leftfoot<=50){ //不转换数据类型无法比较大小 $left_10to50_arr[]=$vals; } if($keys>3)exit; } echo '<pre>'; print_r($left_10to50_arr); echo '</pre>'; exit;
2차원 배열의 형식은 다음과 같습니다.
숫자 문자는 변환 후 0이 되며 상황은 다음과 같습니다.