我来自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()
,它将自动为您提供该文件中的行数组。