Home  >  Article  >  Backend Development  >  关于变量的作用域,有点小问题

关于变量的作用域,有点小问题

WBOY
WBOYOriginal
2016-06-20 12:29:27951browse

看了十八哥的视频,学着做,有个问题想不通。


$tid=$_GET['tid'];

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

$pr=fgetcsv($fh);

while($pr!=false){
        print_r($pr);
}
?>

为什么$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){
    
        print_r(fgetcsv($fh));
    
}
?>

却只能输出第二行的数据呢?


回复讨论(解决方案)

1.fgetcsv每执行一次,都会使指针下移一行的
2.$tid=$_GET['tid']; 这个在你程序中没用
第一个程序

<?php$tid=$_GET['tid'];$fh=fopen('./msg.txt','r');$pr=fgetcsv($fh);while($pr!=false){        print_r($pr);}?>


因为$pr不空,所以会死循环,因为你只获取了第一行数据

第二个程序是对的。

第三个程序
<?php$fh=fopen('./msg.txt','r');while(fgetcsv($fh)!=false){ // 这里获取后,指针下移一行            print_r(fgetcsv($fh)); // 所以这里会获取到第二行的数据    }?>


例如:
msg.txt的内容
"aa"
"bb"
"cc"
"dd"
"ee"
则会输出

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

1.fgetcsv每执行一次,都会使指针下移一行的
2.$tid=$_GET['tid']; 这个在你程序中没用
第一个程序

<?php$tid=$_GET['tid'];$fh=fopen('./msg.txt','r');$pr=fgetcsv($fh);while($pr!=false){        print_r($pr);}?>


因为$pr不空,所以会死循环,因为你只获取了第一行数据

第二个程序是对的。

第三个程序
<?php$fh=fopen('./msg.txt','r');while(fgetcsv($fh)!=false){ // 这里获取后,指针下移一行            print_r(fgetcsv($fh)); // 所以这里会获取到第二行的数据    }?>


例如:
msg.txt的内容
"aa"
"bb"
"cc"
"dd"
"ee"
则会输出

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



谢谢,完全理解了!
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:php乱码Next article:[Intermediate Laravel] 11-Dispatching-Jobs