好吧,我覺得這很奇怪,但應該有一個解釋。這是發生了什麼。意外的PHP數組關鍵行爲
這裏該代碼應該沒有什麼呼應:
$str = '[email protected]';
$key = '11111';
echo strpos($str, $key);
exit;
..是的,這正是我所得到的,什麼都沒有。但是! 如果我使用$鍵(其中包含字符串)作爲陣列的實際鑰匙:
$str = '[email protected]';
$arr = array('11111' => 'test');
foreach ($arr as $key => $val)
{
echo 'String: '.$str.'<br>';
echo 'Key: '.$key.'<br>';
echo 'Found at position: '.strpos($str, $key);
}
exit;
我得到這個驚人的,不可思議的結果:
String: [email protected]
Key: 11111
Found at position: 2
那麼PHP在這裏找到被串是信g
但是,什麼是更驚人的,是的位數改變了結果:
$str = '[email protected]';
$arr = array('111' => 'test');
foreach ($arr as $key => $val)
{
echo 'String: '.$str.'<br>';
echo 'Key: '.$key.'<br>';
echo 'Found at position: '.strpos($str, $key);
}
exit;
這一給出:
String: [email protected]
Key: 111
Found at position: 9
在這方面的專家? 謝謝。
編輯: 這是在我的項目中使用的實際代碼例子給出了這樣的誤報:
$email = '[the email of the user here]';
$arr = array(
// [...]
'11111' => 'Banned',
'22222' => 'Banned',
'33333' => 'Banned',
// [...]
);
foreach ($arr as $key => $reason)
{
if (strpos($email, (string)$key) !== false)
{
return 'Keyword: '.(string)$key.' found in the user Email address with reason: '.(string)$reason;
}
}
因此,即使用(string)在變量$key
前它在登錄表單
[與Strpos在PHP的問題(的可能的複製https://stackoverflow.com/questions/1039738/問題與strpos在PHP) – mickmackusa