0

我来自 C++ 背景,对 PHP 的世界还比较陌生。我目前正在写一个有index.php 和defines.php 的小片段。

在定义中我有变量

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

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

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

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

4

3 回答 3

2

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

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

function checkPasswd($login,$passwd){    
  global $passfile;
  foreach ($passfile as $line) {
    // some code  
  }
}
于 2012-08-23T00:40:08.043 回答
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  
}
}
于 2012-08-23T00:42:34.443 回答
0

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

你需要先把它变成一个数组,这样做的一个选择是explode("\n").

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

于 2012-08-23T00:38:07.497 回答