現在、phpで各国のあるデータを取得するために下記のような処理をしました。
*実際はAPIを利用していますが、その部分は省きます。
lang
1$country_list=array( 2"IN","ID","UZ","KZ","KH","KG","SG","LK","TH","TJ","TM","NP","PK","BD","BT","PH","BN","VN","MO","MY","MM","MY","MN","LA","CN","TW","KR","TW","HK","AG","GU","SP","SC","SB","PF","PW","FJ","MU","MV","RE","HW","IS","IE","AZ","AE","AL","MD","MA","04","JO","LV","LT","RO","LU","LB","RU","US","AR","EC","SV","BB","PR","BR","VE","BZ","PE","BO","HN","MX","VI","AU","NZ","PG","DZ","IR","UG","ET","ER","OM","GH","QA","GM","KW","KE","CG","ZR","ZM","DJ","ZW","SD","SZ","SN","TZ","TG","NG","NA","NG","BH","03","BI","BJ","BW","MG","MW","MZ","RW","LS","ZA"); 3$len=count($country_list); 4 5$max=5; 6 7testfunc(0); 8 9function testfunc($cc){ 10global $len; 11global $max; 12global $country_list; 13 14 echo "国名:".$country_list[$cc]."<br>"; 15 16 if($cc==$len){ 17 echo "finish"; 18 exit(); 19 }else{ 20 21 for($i=0; $i<=$max; $i++){ 22 echo "for文:".$i."回目<br>"; 23 } 24 } 25 26 27 $cc++; 28 testfunc($cc); 29}
実際の各国のデータはfor文の部分ですが、今回はすっきりさせるために最大値なども$maxで処理しています。
上記の関数を見ていただくと分かりますが、関数内で関数を呼んでいる再帰関数で、さらにその関数内でfor文を呼び出しているので、上記の処理だとすんなりいけますが実際にはもっと多いデータ数になりCSVに保存する処理も追加しているせいか、$country_listが107ほどあると思いますが、その半分ほどで処理が止まってしまいます。
処理が重すぎたせいかもしれませんが、このような同じ関数をなんども呼び出す方法、しかもその中でfor文などで大量に処理する際の効率のよい書き方などありますでしょうか?
言葉足らずだと思いますがよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー