フォームから送信された値が配列のid, password, name と一致したらname を表示し、一致しない場合はエラーメッセージを表示するというコードを書きたいのですが、foreachを使用しているため配列にある全てのデータが処理されてしまいます。全ての配列内のデータを表示させるのではなく、一致するものだけを表示するにはどうしたら良いでしょうか?
好ましい表示結果
id, password, name が一致する場合 (idに22, passwordに9100を入力した場合)
'鈴木' のみが表示される
id, password, name が一致しない場合
'正しいidかpasswordを入力してください' と表示される
下記のコードの表示結果
id, password, name が一致する場合 (idに22, passwordに9100を入力した場合)
正しいidかpasswordを入力してください
正しいidかpasswordを入力してください
鈴木
id, password, name が一致しない場合
正しいidかpasswordを入力してください
正しいidかpasswordを入力してください
正しいidかpasswordを入力してください
php
1$memberlist = ['柴田' => ['id' => '20', 'password' => '1234'], 2 '田中' => ['id' => '21', 'password' => '5678'], 3 '鈴木' => ['id' => '22', 'password' => '9100'] 4]; 5 6$id = filter_input(INPUT_POST, 'id'); 7$pass = filter_input(INPUT_POST, 'password'); 8 9foreach ($memberlist as $name => $val) { 10 if (($val ['id'] === $id) && ($val ['password'] === $pass)) { 11 echo $name. "<br/>"; 12 } else { 13 echo '正しいidかpasswordを入力してください' . "<br/>"; 14 } 15}
html
1<!DOCTYPE html> 2<html lang = “ja”> 3<head> 4<meta charset = “UTF-8”> 5<title>GET・POST練習</title> 6</head> 7<body> 8<h2>ログイン</h2> 9<form action="lesson09.php" method="post"> 10<label> ID </label><input type="text" name="id"><br/> 11<label>パスワード</label><input type="number" name="password"><br/> 12<input type="submit" value="送信"> 13</form> 14</body> 15</html> 16