2014-02-09 73 views
1

我与它是用PHP编写CRM工作的高度计,我需要创建一组电子邮件地址是高度用于例如:组的电子邮件地址,该地址在列表

[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 

这里是我想为:

[email protected] (3) 
[email protected] (2) 
[email protected] (1) 

我试图像在PHP代码:

$string_emails = "[email protected] [email protected] [email protected] 
[email protected] [email protected] [email protected]"; 
$emails = str_word_count($string_emails, 1); 
$ret = array_count_values($emails); 
print_r($ret); 

,但没有运气这是告诉我只是字而已。

谢谢。

+2

停止链接函数调用那样。它使它无法调试。 '$ arr = str_word_count(...);后续代码var_dump($ ARR); $ RET = array_count_values($ ARR);后续代码var_dump($ RET)'是调试容易得多。 –

+0

感谢马克,我将借此 – Max

+1

'array_count_values的护理(爆炸(””,$ string_emails))'大概是你所需要的。 –

回答

1
$string_emails = "[email protected] [email protected] 
[email protected] [email protected] [email protected] 
[email protected]"; 
// we create an array with the values if you really want to have an str for your values 
$emails = explode(' ', $string_emails); 

$emails_list = array(); 

foreach($emails as $item) 
{ 
    $emails_list[$item] = $emails_list[$item]+1; 
} 

print_r($emails_list); 
+0

-1。内化一个字符串是毫无意义的。 implode期望ARRAY作为它的输入。 –

+1

谢谢你,没看出来。 – Codel

0

这个怎么样

$emails = "[email protected] [email protected] [email protected] 
[email protected] [email protected] [email protected]"; 

$array = array(); 
$array = explode(" ",$emails); 

if(sizeof($array) > 0){ 
$final_array = array(); 
foreach($array as $key=>$val){ 
    $final_array[$val] += 1 ; 
} 
} 

print_r($final_array); 

输出::

Array ([[email protected]] => 1 [[email protected]] => 3 [ [email protected]] => 1 [[email protected]] => 1) 

UPDATE

发现一个问题,额外的空间,可能会导致问题,所以这条线将解决这个

$final_array[trim($val)] += 1 ; 

代替

$final_array[$val] += 1 ; 
+0

你重写内部array_count_values(),这很可能更快 – 2014-02-09 18:52:15

+0

呀有时我只是不能记得函数的名称,因此只写逻辑,但是如你所说的内部功能更快:) –

+0

谢谢阿比克,但我需要像这样的组: 阵列( [[email protected]] => 1 [[email protected]] => 3 [emailScond @ domain。 com] => 2) – Max

相关问题