문제 설명: 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이 되며 상황은 다음과 같습니다.
콩이 부족하다는 건 무슨 뜻인가요? 위의 소중한 친구, 피빈?
333
44444444444444433333333333
원두 1빈 2빈 3빈 0빈 0빈 - 콩 = 콩 43빈 2빈 2빈 4빈 4빈
콩이 부족해요, 콩이 부족해요, 콩이 부족해요, 콩이 부족해요, 콩이 부족해요, 콩이 부족해요, 콩이 부족해요
콩이 부족해, 콩이 부족해, 콩이 부족해, 콩이 부족해, 콩이 부족해, 콩이 부족해