2015-04-23 89 views
1

我遇到了问题。我想数清我阵列使用特定的元素我数组内数组键的主阵列计算阵列中阵列中元素的数量

public function index() 
{ 
      $user=User::all(); 
      $lead=Lead::all(); 
      $role=Role::all(); 
      $lead=DB::table('lead') 
       ->select(DB::raw('lead.id','users.number','users.username', 'lead.leadid','lead.first_name', 'lead.last_name','lead.email' ,count('lead.email'))) 
       ->where ('lead.email', '>', 1) 
       ->groupBy('lead.email') 
       ->leftJoin('users', 'users.number', '=', 'lead.assign') 
       ->get(); 
       $user=DB::table('users')->select('users.number','users.username')->get(); 

       echo "<pre>"; 
       print_r($lead); 
       die(); 
} 

在这里,是输出,当我把它打印出来

Array 
(
[0] => Array 
    (
     [id] => 63 
     [number] => 3 
     [username] => shankar 
     [leadid] => zcrm_125720000016007771 
     [first_name] => 
     [last_name] => Amoah Owusu Richmond 
     [email] => [email protected] 
    ) 

[1] => Array 
    (
     [id] => 64 
     [number] => 3 
     [username] => shankar 
     [leadid] => zcrm_125720000016007733 
     [first_name] => Deus 
     [last_name] => mathew 
     [email] => [email protected] 
    ) 

[2] => Array 
    (
     [id] => 65 
     [number] => 2 
     [username] => james 
     [leadid] => zcrm_125720000016007737 
     [first_name] => bari 
     [last_name] => safi 
     [email] => [email protected] 
    ) 

[3] => Array 
    (
     [id] => 66 
     [number] => 11 
     [username] => nishupandey 
     [leadid] => zcrm_125720000016007741 
     [first_name] => Noorahmad 
     [last_name] => Noor 
     [email] => [email protected] 
    ) 

[4] => Array 
    (
     [id] => 67 
     [number] => 12 
     [username] => ravi123 
     [leadid] => zcrm_125720000016007747 
     [first_name] => munsanje 
     [last_name] => nakeempa 
     [email] => [email protected] 
    ) 

[5] => Array 
    (
     [id] => 68 
     [number] => 8 
     [username] => veerkishor 
     [leadid] => zcrm_125720000016007751 
     [first_name] => Noorahmad 
     [last_name] => Noor 
     [email] => [email protected] 
    ) 

[6] => Array 
    (
     [id] => 69 
     [number] => 13 
     [username] => rahul 
     [leadid] => zcrm_125720000016007755 
     [first_name] => painad 
     [last_name] => sherzad 
     [email] => [email protected] 
    ) 
) 

我想算元素使用电子邮件并检查元素出现在数组中的次数。我试图使用array_count_values,但我不太清楚如何使用它。提前

回答

1

试试这个:

在你的DB :: raw中,你需要把“count”放在引号内。否则,你将只运行php count(如sizeof)。

<?php 

    $lead=DB::table('lead') 
    ->select(['lead.id','users.number','users.username', 'lead.leadid','lead.first_name', 'lead.last_name','lead.email']) 
    ->select(DB::raw("count('lead.email') as total")) 
    ->where ('lead.email', '>', 1) 
    ->groupBy('lead.email') 
    ->leftJoin('users', 'users.number', '=', 'lead.assign') 
    ->get(); 
0

由于要计算有多少个元素具有相同的电子邮件,我想你必须做手工......

$emails = array(); 
foreach ($lead as $lineNumber => $line) { 
    $email = $line['email']; 
    if(array_key_exists("$email",$emails) { 
     $emails["$email"]++; 
    } else { 
     $emails["$email"] = 1; 
    } 
} 
echo "<pre>"; 
print_r($emails); 

这是你想要的吗?

+0

谢谢,但它不起作用 –

+0

你能解释什么是不工作吗?也许'$ email'不是一个字符串,必须加双引号(我编辑答案) – Random

+0

它的工作,但它很难指向一个元素编程方式...实际上需要使用其他答案DB说: : 选择 –

0

如果你想计算在大数组中具有特定属性的数组的数量,那么你需要遍历所有外数组元素并检查内部数组元素。