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

时间:2012-08-23 00:36:38

标签: php variables

我来自C ++的背景,并且在PHP世界中相对较新。 我现在正在写一个有index.php和definitions.php。

的小块

在定义中我有变量

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

我想在索引中的函数内使用$ passfile。 我可以使用它$ passfile或者我也必须使用全局吗? 这就是我所拥有的

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

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

3 个答案:

答案 0 :(得分:2)

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

$passfile= file('../ass1_data/passwords.txt');

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

答案 1 :(得分:1)

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  
}
}

答案 2 :(得分:0)

你不能简单地foreach覆盖一个字符串(即使你可以用下标符号访问它的字节)。

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

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