我有像下面PHP數組分組值
array(0=>A,1=>A,2=>B,3=>B,4=>C,5=>A,6=>A)
我的問題是我需要組具有多個發生相同的值的數組。例如,對於上述問題,我需要一個像數組('A'=>(count1 => 2,count2 => 2),'B'=>(count1 => 2),'C'=>(count1 = > 1))。我怎麼能循環數組
我有像下面PHP數組分組值
array(0=>A,1=>A,2=>B,3=>B,4=>C,5=>A,6=>A)
我的問題是我需要組具有多個發生相同的值的數組。例如,對於上述問題,我需要一個像數組('A'=>(count1 => 2,count2 => 2),'B'=>(count1 => 2),'C'=>(count1 = > 1))。我怎麼能循環數組
$data = array(0=>A,1=>A,2=>B,3=>B,4=>C,5=>A,6=>A);
$counters = array();
$prev = NULL;
array_walk(
$data,
function ($entry) use (&$prev, &$counters) {
if ($entry !== $prev) {
$prev = $entry;
$counters[] = 1;
} else {
$counters[count($counters)-1]++;
}
}
);
var_dump($counters);
如果您需要在數組中值的頻率,對於調用 array_count_values($陣列)PHP函數。
在您的例子的情況下,
$數據=陣列(0 => 'A',1 => 'A',2 => 'B',3 => 'B',4 => 'C',5 => 'A',6 => 'A');
print_r(array_count_values($ data));
將輸出
陣列 ( [A] => 4 [B] => 2 [C] => 1 )
這裏是答案 -
$arr=array(0=>A,1=>A,2=>B,3=>B,4=>C,5=>A,6=>A);
$count=array();$passedelement=array();$pastelement='';$n=0;$k=0;$presentflag=0;
for($i=0;$i<7;$i++){
if($pastelement==$arr[$i]){$presentflag=1;}
if($presentflag==0){
$pastelement=$arr[$i];
$passedelement[$k++]=$arr[$i];
for($j=$i;$j<7;$j++){
if($arr[$i]==$arr[$j]){$count[$n]+=1;}else{break;}
}
$n++;
}
$presentflag=0;
}
print_r($passedelement);
print_r($count);
這是什麼意思'count1','count2'? –
只是一個關鍵。對於上述問題,我只需要像Array(2,2,1,2)這樣的數組。 A,B,C的出現次數和A再次出現的次數 –