変数のスコープに少し問題があります。

WBOY
リリース: 2016-06-20 12:29:27
オリジナル
950 人が閲覧しました

司馬兄さんの動画を見てやり方を学びましたが、分からない質問があります。


$tid=$_GET['tid'];

$fh=fopen('./msg.txt','r') ;

$pr=fgetcsv($fh)

while($pr!=false){
;

なぜ $pr=fgetcsv($fh ); while ステートメントの外で記述すると問題が発生しますか?
次のように記述する必要があります: while(($pr=fgetcsv($fh))!=false)


また:

$fh =fopen ('./msg.txt','r');

while(($row=fgetcsv($fh))!=false){

print_r($row) ;

}
?>
これはループで数行のデータを出力できますが、次のように変更しました。 >$fh= fopen('./msg.txt','r');

while(fgetcsv($fh)!=false){
>
}
?> ;

しかし、データの 2 行目しか出力できないのですか?







ディスカッションへの返信(解決策)

1. fgetcsv が実行されるたびに、ポインタは 1 行下に移動します

2.$tid=$_GET['tid']; これはプログラムでは役に立ちません 最初のプログラム

$pr は空ではないため、データの最初の行しか取得できず、無限ループが発生します。

2 番目のプログラムは正しいです。

3 番目のプログラム

<?php$tid=$_GET['tid'];$fh=fopen('./msg.txt','r');$pr=fgetcsv($fh);while($pr!=false){        print_r($pr);}?>
ログイン後にコピー
ログイン後にコピー


例:
msg.txt の内容
"aa"
"bb"
"cc"
"dd"
<?php$fh=fopen('./msg.txt','r');while(fgetcsv($fh)!=false){ // 这里获取后,指针下移一行            print_r(fgetcsv($fh)); // 所以这里会获取到第二行的数据    }?>
ログイン後にコピー
ログイン後にコピー
"ee"


Array ( [0] => bb )
Array ( [0] => dd )
< を出力します。 🎜>

1. fgetcsv が実行されるたびに、ポインタは 1 行下に移動します
2. $tid=$_GET['tid']; これはプログラムでは役に立ちません
プログラム



$pr は空ではないため、データの最初の行しか取得できないため、無限ループします。

2 番目のプログラムは正しいです。


3 番目のプログラム

<?php$tid=$_GET['tid'];$fh=fopen('./msg.txt','r');$pr=fgetcsv($fh);while($pr!=false){        print_r($pr);}?>
ログイン後にコピー
ログイン後にコピー

例:
msg.txt の内容
"aa"
"bb"
"cc"
"dd"
"ee"
<?php$fh=fopen('./msg.txt','r');while(fgetcsv($fh)!=false){ // 这里获取后,指针下移一行            print_r(fgetcsv($fh)); // 所以这里会获取到第二行的数据    }?>
ログイン後にコピー
ログイン後にコピー


Array ( [0] => bb )
Array ( [0] => dd )

ありがとうございます、よくわかりました!

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート