我正在尝试一个简单的数组场景,部分用于练习数组。
下面的代码只是将username
和password
变量组合与合并数组进行比较。
它有效,但我认为它可以大大改善。
<?php
$username = 'demo@demo.com';
$password = '123456';
$allowed_creds1 = array('demo@demo.com'=>'123456');
$allowed_creds2 = array('john@smith.com'=>'654321');
$allowed_creds3 = array('jane@doe.com'=>'124578');
$mergedArrays = array_merge($allowed_creds1, $allowed_creds2, $allowed_creds3);
foreach($mergedArrays as $key => $val){
echo "$key, $val \n";
if($username == $key && $password == $val){
die("Valid Username and Password");
}
}
?>
理想情况下,我想验证真假回报,以便我可以做更多。
我已经考虑将foreach
循环放在一个返回布尔值的自定义函数中,但在我开始复杂化之前,我觉得我应该问是否有更好的方法来验证我的php变量合并的数组。
答案 0 :(得分:0)
当您知道要查找的密钥时,无需迭代数组。只需使用密钥检查值即可。
if ( $mergedArrays[$username] == $password ) {
return TRUE;
}
答案 1 :(得分:0)
由于您使用用户名作为数组键,因此您只需检查密钥是否存在:
if (!empty($mergedArrays[$username]) && $mergedArrays[$username] === $password) {
return true;
}
请注意,这会使用户名区分大小写(许多用户可能不会期望这样)。请注意严格比较(===
)。以这种方式比较字符串时,您需要避免数字转换,这可能导致不正确的结果。例如:
echo ('0x04d' == '77'); // returns true
当然,通常您应该通过数据库中的哈希/加密来存储和检查此信息。
答案 2 :(得分:0)
检查是否有名为$username
的密钥,然后检查具有此密钥的元素是否具有等于密码的有效值:
if (array_key_exists($username , $mergedArrays)) {
if(password==$mergedArrays[$username]) return true;
}