我有这样组如何排列并计数
$arr = array(1,1,1,2,2,3,3,1,1,2,2,3);
阵列,我发现一个功能array_count_values
。但它会将所有相同的值分组并统计它们并打破序列。
$result[1] = 5
$result[2] = 4
$result[3] = 3
如何创建将遵循序列的count组数组。结果我真正想要的是:
[1] = 3;
[2] = 2;
[3] = 2;
[2] = 2;
[3] = 1;
我有这样组如何排列并计数
$arr = array(1,1,1,2,2,3,3,1,1,2,2,3);
阵列,我发现一个功能array_count_values
。但它会将所有相同的值分组并统计它们并打破序列。
$result[1] = 5
$result[2] = 4
$result[3] = 3
如何创建将遵循序列的count组数组。结果我真正想要的是:
[1] = 3;
[2] = 2;
[3] = 2;
[2] = 2;
[3] = 1;
它可以简单地手工完成:
$arr = array(1,1,1,2,2,3,3,1,1,2,2,3);
$result = array();
$prev_value = array('value' => null, 'amount' => null);
foreach ($arr as $val) {
if ($prev_value['value'] != $val) {
unset($prev_value);
$prev_value = array('value' => $val, 'amount' => 0);
$result[] =& $prev_value;
}
$prev_value['amount']++;
}
var_dump($result);
$current = null;
foreach($your_array as $v) {
if($v == $current) {
$result[count($result)-1]++;
} else {
$result[] = 1;
$current = $v;
}
}
var_dump($result);
您的解决方案的一个班轮将是$结果= explode(',',implode(',',array_count_values($ your_array))); – epynic 2015-02-26 07:00:12
这里是我会做的方式:
function SplitIntoGroups($array)
{
$toReturnArray = array();
$currentNumber = $array[0];
$currentCount = 1;
for($i=1; $i <= count($array); $i++)
{
if($array[$i] == $currentNumber)
{
$currentCount++;
}
else
{
$toReturnArray[] = array($currentNumber, $currentCount);
$currentNumber = $array[$i];
$currentCount = 1;
}
}
return $toReturnArray;
}
$answer = SplitIntoGroups(array(1,1,1,2,2,3,3,1,1,2,2,3));
for($i=0; $i<count($answer); $i++)
{
echo '[' . $answer[$i][0] . '] = ' . $answer[$i][1] . '<br />';
}
从不在循环中使用count($ array),它在每个循环中计算,foreach()是一个好得多的循环结构,用于php中的数组 – 2011-03-10 04:43:50
function findRepetitions($times, $array) {
$values = array_unique($array);
$counts = [];
foreach($values as $value) {
$counts[] = ['value' => $value, 'count' => 0];
}
foreach ($array as $value) {
foreach ($counts as $key => $count) {
if ($count['value'] === $value) {
$counts[$key]['count']++;
}
}
}
$repetitions = [];
foreach ($counts as $count) {
if ($count['count'] === $times) {
$repetitions[] = $count['value'];
}
}
return $repetitions;
}
如果你不想要数组中的值
$result = explode(',' , implode(',', array_count_values($your_array)));
那么PHP的array_count_values函数呢?
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>
输出:
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
您是否尝试过foreach语句? – Jason 2011-03-10 04:00:36
这是不是一个有效的数组,因为钥匙需要是唯一的 – 2011-03-10 04:02:30
如何:1 - 数量=> 1计数=> 3,2号=> 2计数=> 2 .... – 2011-03-10 04:03:47