2012-06-24 77 views
1

嗨需要帮忙从给定数组重复值,下面是我尝试的$values[4]获得最大阵列数

$values = array(
    "0"=> "abc", 
    "1"=> "aaa", 
    "2"=> "aaa|abc", 
    "3" => "| | | | | | | | | | | | | | | | ", 
    "4" => "a|b|b|c|d|e|f|g", 
    "5" => "1|2|3||4|5|6" 
); 


foreach ($values as $key) { 
$prevalues = explode('|', $key); 
$count[] = count($prevalues); 
} 
print_r($counts); 
$counts = array_count_values($count); 
arsort($counts); 
echo $max= key($counts); 


Array 
(
    [0] => 1 
    [1] => 1 
    [2] => 2 
    [3] => 17 
    [4] => 8 
    [5] => 8 
) 
print_r($max); 

目前获得最大的价值,我得到的代码$最大= 1;我需要$最大是8

回答

1

何不:

foreach ($values as $key=>$value) 
    $max = max(substr_count($value,'|')+1,$max); 

echo $max; 

否阵列分裂或存储阵列。 :)

+0

如何获得重复值 – user1477117

+0

@ user1477117这是一个问题吗? – iambriansreed

+0

@iambrainsreed:我需要在数组中获得最重复的值,我如何使用您的方法获得重复值 – user1477117

0

可以使用max()在阵列中找到的最高值,这里有一个例子

echo max(array(1, 5, 7, 2, 3)); 

这应该给你17

foreach ($values as $item) 
{ 
    $temp[] = substr_count($item, "|") + 1; 
} 

echo max($temp); 
+0

但我真的无法获得其即时通讯使用 – user1477117

+0

从上面的代码中最大值@ user1477117看到我的更新答案 – slash197

1

如果你已经你有数组$计数的值,你只需要找到数组中的最大值,就像我想你问的那样,然后有一个内置函数已经在php中。

$max = max($counts); 

$最大将等于17

文档: http://php.net/manual/en/function.max.php

在问候阵列中找到重复的必备值按你的意见来iambrainsreed:

你可以使用array_count_values()。

$valueCount = array_count_values($counts); 
print_r($valueCount); 

将输出:

Array 
(
    [1] => 2 
    [2] => 1 
    [17] => 1 
    [8] => 2 
) 

从那里,你可以使用这些数据为您所需要的。
文档: http://php.net/manual/en/function.array-count-values.php

+0

由于其工作 – user1477117

+0

更好,但iambriansreed的想法纳入substr_count(),你可以得到的文档在。 http://php.net/manual/en/function.substr-count.php – Roger

0

你很可能substr_count($key,'|')+1,而不是explode

编辑:我在想,我不是很清楚这个问题的真正理解,也许你能写得更清楚些吗?你为什么使用key功能?