Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
foreach循环中的php foreach_Php_Loops_Foreach_File Get Contents - Fatal编程技术网

foreach循环中的php foreach

foreach循环中的php foreach,php,loops,foreach,file-get-contents,Php,Loops,Foreach,File Get Contents,我想从他的文件中提取所有用户名和密码,并很好地输出。 我在我的计算机上的appserv 2.5.1上写了一段代码,但只有最后一个循环给出了用户名输出。 在其他机器上测试了该代码,效果非常好。 不知道是什么问题 usernames.txt内容: user1 user2 user3 pass1 pass2 pass3 $usernames = explode("\n", file_get_contents("usernames.txt")); $passwords = explode("\n",

我想从他的文件中提取所有用户名和密码,并很好地输出。 我在我的计算机上的appserv 2.5.1上写了一段代码,但只有最后一个循环给出了用户名输出。 在其他机器上测试了该代码,效果非常好。 不知道是什么问题

usernames.txt内容:

user1
user2
user3
pass1
pass2
pass3
$usernames = explode("\n", file_get_contents("usernames.txt"));
$passwords = explode("\n", file_get_contents("passwords.txt"));

foreach( $usernames as $username )
{
    foreach( $passwords as $password )
    {
        echo $username.":".$password."\n";
    }
}
passwords.txt内容:

user1
user2
user3
pass1
pass2
pass3
$usernames = explode("\n", file_get_contents("usernames.txt"));
$passwords = explode("\n", file_get_contents("passwords.txt"));

foreach( $usernames as $username )
{
    foreach( $passwords as $password )
    {
        echo $username.":".$password."\n";
    }
}
脚本内容:

user1
user2
user3
pass1
pass2
pass3
$usernames = explode("\n", file_get_contents("usernames.txt"));
$passwords = explode("\n", file_get_contents("passwords.txt"));

foreach( $usernames as $username )
{
    foreach( $passwords as $password )
    {
        echo $username.":".$password."\n";
    }
}
输出:

:pass1
:pass2
:pass3
:pass1
:pass2
:pass3
user3:pass1
user3:pass2
user3:pass3

for($i=0;$i
for($i=0;$i)在与文章作者调试后,我猜问题出在换行符上。使用
\r\n
修复了该问题:

$usernames = explode("\n\r", file_get_contents("usernames.txt"));
$passwords = explode("\n\r", file_get_contents("passwords.txt"));

作为参考,请注意,假设您的输入数据是正确的,这是非常重要的。如果您发现有问题,并且它明显指向您以前犯的错误(在这种情况下,显然不是foreach函数有问题,而是数组有问题),然后你需要放下你的骄傲,调试你自己的代码。我已经为PHP编程10年了,但我仍然必须记住每一天。

在与文章作者调试后,我猜问题出在换行符上。使用
\r\n
修复了这个问题:

$usernames = explode("\n\r", file_get_contents("usernames.txt"));
$passwords = explode("\n\r", file_get_contents("passwords.txt"));

作为参考,请注意,假设您的输入数据是正确的,这是非常重要的。如果您发现有问题,并且它明显指向您以前犯的错误(在这种情况下,显然不是foreach函数有问题,而是数组有问题),然后你需要放下你的骄傲,调试你自己的代码。我已经为PHP编程10年了,我仍然必须记住每一天。

总有人会说你不需要它(而且你通常不需要)但是每当我解析这些平面文件时,我倾向于使用正则表达式——总是会有一些奇怪的字符、额外的换行符或差异进入文本文件——无论是从传输服务器、恢复备份还是简单的用户干扰。在这种情况下,你也可以使用
数组\u combine
如果您希望继续使用
foreach
循环,我知道有些人更喜欢它的可读性

preg_match_all('/\w+/m',file_get_contents('usernames.txt'),$usernames);
preg_match_all('/\w+/m',file_get_contents('passwords.txt'),$passwords);
if(count($usernames[0])!==count($passwords[0]))
die('计算机说:不匹配!');//错误处理有些相似。。。
$result=array_combine($usernames[0],$passwords[0]);
foreach($name=>$pass的结果)
回显“{$name}:{$pass}\n”;

总有人会说你不需要它(你通常也不需要)但是每当我解析这些平面文件时,我倾向于使用正则表达式——总是会有一些奇怪的字符、额外的换行符或差异进入文本文件——无论是从传输服务器、恢复备份还是简单的用户干扰。在这种情况下,你也可以使用
数组\u combine
如果您希望继续使用
foreach
循环,我知道有些人更喜欢它的可读性

preg_match_all('/\w+/m',file_get_contents('usernames.txt'),$usernames);
preg_match_all('/\w+/m',file_get_contents('passwords.txt'),$passwords);
if(count($usernames[0])!==count($passwords[0]))
die('计算机说:不匹配!');//错误处理有些相似。。。
$result=array_combine($usernames[0],$passwords[0]);
foreach($name=>$pass的结果)
回显“{$name}:{$pass}\n”;

您应该从调试开始。尝试
var\u dump($usernames)
并查看它是否包含它应该包含的内容。您有一个逻辑错误。只使用一个循环。通过在循环中使用循环,您可以得到n*m个周期[n=count usernames;m=count passwords]。您只需要n个周期(或m)你真的想从这些文件中显示用户名/密码的每一个组合的完整矩阵吗?因为这就是这个代码所要做的。我怀疑你只是想显示用户名和密码。如果是这样的话,我建议使用一个< <代码> > <代码>循环。我也建议你不要存储用户名。以及单独文本文件中的密码…为什么不存储在数据库中,或者如果绝对必要,存储在由分隔符分隔的文件中(例如,CSV文件)。这样,您就可以确保用户名和密码始终正确存储在一起。每个数组分别与foreach循环和contatin正常工作。我需要代码按照设计的方式工作我有我的理由…没有数据库我从localhost运行它,需要它位于单独的文件中,因为我这只是一个非常大的代码中的几行……好吧,也许它们可以单独工作。但是您是否尝试过
var\u dump()
?因为您的代码工作得非常好,所以问题可能出在
explode()上
。行分隔符可能是一个\r\n而不是一个\n。这可以解释为什么它在某些机器上工作,而在其他机器上不工作。您应该从调试开始。尝试
var\u dump($usernames)
并查看它是否包含它应该包含的内容。您有一个逻辑错误。只使用一个循环。通过在循环中使用一个循环,您可以得到n*m个循环[n=count用户名;m=count密码]。您只需要n个循环(或m个循环)你真的想从这些文件中显示用户名/密码的每一个组合的完整矩阵吗?因为这就是这个代码所要做的。我怀疑你只是想显示用户名和密码。如果是这样的话,我建议使用一个< <代码> > <代码>循环。我也建议你不要存储用户名。和密码在单独的文本文件中…为什么不存储在数据库中,或者如果绝对必要,存储在由分隔符分隔的文件中(例如,CSV文件)。这样,您就可以确保用户名和密码始终正确地存储在一起。每个数组