如何从特定索引处的两个数组中获取值?我有一个$usernames
数组和一个$passwords
数组。我还有名为$username
和$password
的变量(用户输入的用户名和密码)。
我想在$username
中获取$usernames
的索引,并将其与$password
中的$passwords
索引进行比较。如果匹配,则用户名和密码正确无误。如果没有,他们是不正确的。
我知道数组可能不是最好的方法,但它只适用于5人,并不是真正的绝密,只是一个简单的密码保护。
我试过了:
<?php
$usernames = array("test1", "test2");
$passwords = array("password1", "password2");
$list = array($usernames, $passwords);
if (in_array($userName, $usernames)) {
$userNameIndex = returnIndex($usernames, $userName);
$passWordIndex = returnIndex($passwords, $password);
echo("it says:<br />");
echo($userNameIndex . " and password: " . $passWordIndex);
} else {
echo("Not In Array");
}
?>
<?php
function returnIndex($array, $value) {
$ar = $array;
$searchValue = $value;
for($i=0; $i< count($ar); $i++) {
if($ar[i] == $searchValue) return i;
}
}
?>
然而它会返回
它说:
和密码:我
答案 0 :(得分:3)
首先,您不需要function returnIndex
,因为PHP已经有一个:它被称为array_search
。
您可以这样使用它:
$usernames = array("test1", "test2");
$passwords = array("password1", "password2");
$userIndex = array_search($username, $usernames, true);
$passIndex = array_search($password, $passwords, true);
if ($userIndex !== $passIndex || $userIndex === false) {
die("authentication error");
}
但是:拥有单独的用户名和密码数组,虽然它确实有效,但实际上并不是最简单的方法。如果你将每个用户名和密码“靠近”会更好。如果决定完全掌握在您的手中,您可以使用用户名作为键和密码作为同一数组中的值:
$auth = array("test1" => "password1", "test2" => "password2");
通过这种方式,您可以更轻松地完成此操作,而无需任何业务功能:
if (!isset($auth[$username]) || $auth[$username] !== $password) {
die("authentication error");
}
答案 1 :(得分:2)
您的意思是return $i
在搜索功能中吗?另外,$ar[$i]
?
但老实说,使用标准库函数array_search()
会更聪明,它会返回数组元素的索引(如果它在数组中)。
答案 2 :(得分:0)
如果我不得不偏爱array_search,我会使用 foreach 而不是来
foreach($array_name as $key => $value) {
echo $key; // echoes index of an array
echo $value; // echoes value of an array
}
答案 3 :(得分:-2)
使用array_search()代替吗?
http://www.w3schools.com/php/func_array_search.asp
更新:
$userNameIndex = array_search($userName, $usernames);
$paswordIndex = array_search($pasword, $passwords);