初心者です。
Goutteを使ってサイトからデータを抽出しています。
PHP
1 for ($i = 1; $i < 32; $i++) { 2 //日付 3 $date[] = $node->Filter('table#main')->Filter('tr')->eq($i)->Filter('td')->text(); 4 //アクセス 5 $access[] = $node->Filter('table#main')->Filter('tr')->eq($i)->Filter('a')->text(); 6} 7//配列をマージ 8$list = array_map(null, $date, $access); 9var_dump($list) 10
上記のコードで配列はこんな感じに出るんですが
array(31) { [0]=> array(2) { [0]=>string(4) "12/1" [1]=>string(5) "95783" } [1]=> array(2) { [0]=>string(4) "12/2" [1]=>string(5) "89302" } ...略 array(2) { [0]=>string(5) "12/20" [1]=>string(5) "86591" } [20]=> array(2) { [0]=>string(5) "12/21" [1]=>string(3) "×" } [21]=> array(2) { [0]=>string(5) "12/22" [1]=>string(3) "×"
日付が未来だともちろんアクセスがわからないので数値として取得されません
なので<tr>のループの最中に"×"の文字列があればループを終わりにして
最後までの取得しないようにしたいんですが、
調べてみるとbreakを使うとのことでした。
php
1 //"×"があればループを抜ける 2 if ($node->Filter('table#main')->Filter('tr')->eq($i)->Filter('a')->text == "×") { 3 break; 4 }
おそらくこんな感じ?になるのかと思いますが、
このコードをどこの箇所に挿入してもエラーが出て最後の×までループしてしまいます。
どこに入れるのが適切なのでしょうか、またこの書き方で正しいでしょうか。
目的は「配列に"×"を含まず出力する」ことなので、表題と違いますが
var_dump($list)として出す際に×があれば全て配列に出さない処理でも良いのかなと思います。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/21 08:02