0

私は 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() に無効な引数が指定されました」というエラーが表示されます。ヘルプや説明をいただければ幸いです。

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- 2 番目の case( 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(添字表記でそのバイトにアクセスすることはできますが)。

最初にそれを配列に変換する必要があります。それを行うための 1 つのオプションは ですexplode("\n")

ただし、その場所にあるファイルを開きたいようです。その場合、file()そのファイル内の行の配列を自動的に提供する を使用できます。

于 2012-08-23T00:38:07.497 に答える