基本的PHP变量本地/全局问题


basic PHP variable local/global issue

我来自C++背景,对PHP世界相对陌生。我目前正在写一篇有index.php和definitions.php.的小文章

在定义中,我有变量

$passfile = "../ass1_data/passwords.txt";  

我想在索引中的函数中使用$passfile。我可以只使用$passfile吗?还是也必须使用global?这就是我的

function checkPasswd($login,$passwd){    
global $passfile;
$p = $passfile;
foreach ($p as $line) {
// some code  
}
}

目前,我收到错误"为foreach()提供的参数无效"如有任何帮助或解释,我们将不胜感激,谢谢。

假设文本文件中包含带密码的行,则需要首先读取文件的内容,然后循环查看结果:

$passfile= file('../ass1_data/passwords.txt');
function checkPasswd($login,$passwd){    
  global $passfile;
  foreach ($passfile as $line) {
    // some code  
  }
}

1-必须使用global关键字才能在函数内部使用全局变量
2-对于第二种情况(foreach),首先必须读取文件,然后使用explode函数将其拆分并在foreach中使用。:

$passfile = "../ass1_data/passwords.txt";  
function checkPasswd($login,$passwd){    
global $passfile;
$p = explode("'n",file_get_contents($passfile));
foreach ($p as $line) {
// some code  
}
}

您不能简单地在字符串上foreach(即使您可以使用下标表示法访问其字节)。

您需要先将其转换为一个数组,其中一个选项是explode("'n")

但是,听起来您想要在该位置打开文件。在这种情况下,您可以使用file(),它将自动为您提供该文件中的行数组。