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 );

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

4

4 回答 4

1

如果您已经拥有包含值的数组 $counts,并且您只需要像我想您所问的那样在数组中找到最大值,那么 php 中已经有一个内置函数。

$max = max($counts);

$max 将等于 17。

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

关于根据您对 ibrainsreed 的评论在数组中查找必须重复的值:

您可以使用 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

于 2012-06-24T07:21:48.147 回答
1

为什么不:

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

echo $max;

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

于 2012-06-24T07:28:30.363 回答
0

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

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

这应该给你17

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

echo max($temp);
于 2012-06-24T07:19:37.977 回答
0

您可能可以使用substr_count($key,'|')+1而不是explode.

编辑:我在想我不太清楚这个问题,也许你能写得更清楚吗?你为什么要使用这个key功能?

于 2012-06-24T07:22:14.070 回答