2017-07-27 70 views
1

你能幫我使用閉包嗎?我正在使用laravel的收集過濾器來檢查唯一的電子郵件。下面的代碼應該在過濾函數中填入$unique_email數組。關於我如何使用通過引用的方式有問題嗎?提前致謝。Laravel的收集過濾器通過引用不工作

$unique_email = array(); 

    $users->filter(function ($user) use (&$unique_email) { 
     if(!in_array( $user->email , $unique_email )) { 
      return $unique_email[] = $user->email;    
     } 
    }); 

    dd($unique_email); //returns empty array 

回答

0

過濾器必須返回布爾

$unique_email = array(); 

$users->filter(function ($user) use (&$unique_email) { 
    if(!in_array( $user->email , $unique_email )) { 
     $unique_email[] = $user->email; 
     return true;    
    } 
    return false; 
}); 
+0

我已經嘗試過,但沒有奏效。 :( – bwaaaaaa

+0

適用於我,非常抱歉:(是愚蠢的問題,但你有沒有檢查'$ users'不是一個空集合? – Nerea

+0

謝謝!這是問題。我只是意識到,我做了一個dd()循環然後停止在第一次迭代。嘆息... – bwaaaaaa

0

如何使用收集的助手這樣的內容:

$usersWithUniqueMails = $users->unique('email'); 
$unique_email = $usersWithUniqueMails->pluck('email'); 
+0

這是我的第一個解決方案,不幸的是,它不適用於加密數據。所以我不得不使用過濾器 – bwaaaaaa