2012-03-24 56 views
0

如何從特定索引處的兩個數組中獲取值?我有一個$usernames陣列和一個$passwords陣列。我也有變量叫做$username$password(這是用戶輸入的用戶名和密碼)。數組在索引處的值(PHP)

我想要得到的$username的指數$usernames$passwords比較它的$password索引。如果它們匹配,則用戶名和密碼是正確的。如果不是,他們是不正確的。

我知道數組可能不是最好的辦法,但它只適用於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; 
    } 
} 
?> 

但是它返回

它說:

和密碼:我

+4

**答案:**閱讀手冊。 – rdlowrey 2012-03-24 17:56:32

+1

http:// php。net/array – hakre 2012-03-24 17:57:11

+0

保存自己很多工作,並使用關聯數組來代替:'$ users = array(「user1」=>「password1」,「user2」=>「password2」);'然後檢查if' $ users [$ username] == $ password){...'。 – 2012-03-24 18:11:12

回答

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"); 
} 
2

你的意思是在你的搜索功能return $i?另外,$ar[$i]

雖然,說實話,使用這個標準庫函數會更聰明,array_search(),它返回數組元素的索引,如果它在數組中。

+0

我實際上已經通過php.net/array,它沒有提到array_search(),直到底部註釋部分,它並沒有解釋它在做什麼。 – 2012-03-24 18:10:40

+0

@Ali嘗試數組的函數引用。 'array_search()'的特定頁面在http://php.net/manual/en/function.array-search.php。 – 2012-03-24 18:11:31

-2

使用array_search()來代替?

http://www.w3schools.com/php/func_array_search.asp

UPDATE:

所有的
$userNameIndex = array_search($userName, $usernames); 
$paswordIndex = array_search($pasword, $passwords); 
+2

請不要參考[w3fools.com](http://w3fools.com)作爲堆棧溢出的答案。至少指向相關的[PHP手冊條目](http://php.net/manual/en/function.array-search.php)。 – rdlowrey 2012-03-24 17:59:46

+0

@rdlowrey:爲什麼不呢?爲什麼w3schools不是一個可接受的參考? – Stefan 2012-03-24 18:01:40

+1

不,這不是一個可以接受的參考。 – 2012-03-24 18:10:59

0

如果我不得不從array_search除了喜歡的東西,我會用的foreach而不是

foreach($array_name as $key => $value) { 
    echo $key;  // echoes index of an array 
    echo $value; // echoes value of an array 
}