我来自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()提供的无效参数' 任何帮助或解释将不胜感激,谢谢。
答案 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()
,它会自动为您提供该文件中的一系列行。