获得最大数组计数

时间:2012-06-24 07:02:20

标签: php arrays

您需要帮助从给定数组获取重复值,下面是我尝试获取最大值$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 );

目前,我的$ max = 1;我需要$ max为8。

4 个答案:

答案 0 :(得分:1)

如果你已经拥有了带有值的数组$ count,你只需要找到数组中的最大值,就像我想你要问的那样,那么在php中已经有了内置函数。

$max = max($counts);

$ max将等于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

答案 1 :(得分:1)

为什么不:

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

echo $max;

没有数组拆分或存储数组。 :)

答案 2 :(得分:0)

您可以使用max()查找数组中的最高值,这是一个示例

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

这应该会给你17

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

echo max($temp);

答案 3 :(得分:0)

您可以使用substr_count($key,'|')+1代替explode

编辑:我在想我并不清楚这个问题,或许你能写得更清楚吗?你为什么使用key函数?