我在下面創建了一個函數。不確定如何正確訪問數組以比較數據?
我無法上班的部分是在is_array
if
聲明中檢查if $generatedkey == $key
時。
它總是直接進入else
聲明,這意味着即使在我的示例數組中,密鑰不匹配,但密鑰不匹配。我想我可能沒有在foreach
循環中正確地訪問陣列,因此它永遠不會匹配,但不知道如何解決它。我確實用回聲代替return
進行測試,並總是如上所述去else
。
下面代碼中的測試數組實際上是數據庫的結果,它將作爲數組提取,但爲了測試目的,我創建了一個測試數組($userdbkey
)。
# check if activation key already exists if so regenerate a new
# one because activation keys are unique
function activationkeydupcheck($generatedkey, $userdbkey) {
if(is_array($userdbkey)){
foreach($userdbkey as $key){
$key;
}
if($generatedkey == $key){
while($generatedkey == $key){
// generate a new key
return $activationkeygenerator = activationkeygenerator();
}
} else {
// else use original key as it's unique (ie not found in db)
return $activationkeygenerator = $generatedkey;
}
} else { // not an array
if($generatedkey == $userdbkey){
while($generatedkey == $userdbkey){
// generate a new key
return $activationkeygenerator = activationkeygenerator();
}
} // else use the original as it's unique (ie not found in db)
return $activationkeygenerator = $generatedkey;
}
}
// for testing it's static, but in my script it will be auto generated by a a function that generates activation keys.
$generatedkey = 'g5kfjgh84hf5jk219fthjvmcd34tu79ldjhgnbmv1';
//$userdbkey = 'g5kfjgh84hf5jk219fthjvmcd34tu79ldjhgnbmv1';
// for testing i made this test array but in my script it will be comparing against keys in a database which will be fetched as an array.
$userdbkey = array(
'g5kfjgh84hf5jk219fthjvmcd34tu79ldjhgnbmv1',
'g5kfjgh84hf5jk219fthjvmcd34tu79ldjhgnbmv2',
'g5kfjgh84hf5jk219fthjvmcd34tu79ldjhgnbmv3',
'g5kfjgh84hf5jk219fthjvmcd34tu79ldjhgnbmv4',
'g5kfjgh84hf5jk219fthjvmcd34tu79ldjhgnbmv5',
'g5kfjgh84hf5jk219fthjvmcd34tu79ldjhgnbmv6',
'g5kfjgh84hf5jk219fthjvmcd34tu79ldjhgnbmv7',
'g5kfjgh84hf5jk219fthjvmcd34tu79ldjhgnbmv8',
);
activationkeydupcheck($generatedkey, $userdbkey);
嗨@Rob我以爲我需要while循環,因爲如果$ generatedkey不斷生成已經存在的密鑰,我會希望它繼續生成一個,直到找到唯一的密鑰?謝謝 – PHPLOVER
如果你想回復關於while循環,進一步尋找我認爲你現在可能是最好的答案,所以如果你能回答上面我會很感激,因爲我想現在可能已經接受了錯誤的答案。謝謝。我是否需要在while循環中調用函數actionkeydupcheck()時檢查生成的鍵是否已經存在,或者只是調用函數? – PHPLOVER
,因爲我需要它繼續生成一個新的密鑰,直到找到一個唯一的密鑰,因此我的問題需要while循環。謝謝 – PHPLOVER