-2
我試圖檢查foreach循環中的值是否在查詢中的數組中。如果每個值都不在查詢中,它應該被放入no_email_entered數組中,但是當我打印出數組時,它會打印出$ user-> user_email中只包含打印的所有值取出未包含在$ my_user_mails數組中的那些。我也嘗試了一個嵌套的foreach,而且似乎也沒有工作。我會很欣賞這一點。in_array顯示數組循環中的所有值
<?php
//Creates empty array for inserts
$no_email_entered = array();
//Make a loop for the emails
foreach($users_for_site as $user) {
//Check if each email is in $my_user_emails array, if not add it to the $no_email_entered array
if(! in_array($user->user_email, $my_user_emails)) {
$no_email_entered[] = $user->user_email;
}
}
?>
印刷$ no_email_entered陣列的結果給了我所有的users_for_site $,這是不正確的電子郵件。
看起來一目瞭然。沒有看到'$ my_user_emails'和'$ users_for_site'的內容很難說。只需在代碼中添加幾條打印語句就可以很容易地看到發生了什麼。 – Dan 2014-08-29 21:04:05
你知道你可以使用array_diff()嗎? http://ch2.php.net/manual/en/function.array-diff.php – 2014-08-29 21:05:32
請仔細檢查你的'$ my_user_emails'數組,它只需要一維數組,例如只需'array('[email protected]','[email protected]','[email protected]')'還要注意,對於巨大的數組,in_array()可能需要很長時間。最好是執行'$ my_user_emails = array_flip($ my_user_emails)'而不是檢查'if(isset($ my_user_emails [$ user-> user_email]))' – Yaroslav 2014-08-29 21:07:40