2017-06-16 233 views
1

我有這個PHP數組命名$ids計算一個值出現在這個數組中的次數?

Array ( 
    [0] => Array ([id] => 10101101) 
    [1] => Array ([id] => 18581768) 
    [2] => Array ([id] => 55533322) 
    [3] => Array ([id] => 55533322) 
    [4] => Array ([id] => 64621412) 
) 

,我需要讓每個包含$idsid值的新陣列,作爲新的鑰匙,而且每一個出現的時候,作爲新的價值觀。

事情是這樣的:

$newArr = array(
    10101101 => 1, 
    18581768 => 1, 
    55533322 => 2, 
    64621412 => 1, 
); 

這是我有:

$newArr = array(); 
$aux1 = ""; 

//$arr is the original array 
for($i=0; $i<count($arr); $i++){ 
    $val = $arr[$i]["id"]; 
    if($val != $aux1){ 
     $newArr[$val] = count(array_keys($arr, $val)); 
     $aux1 = $val; 
    } 
} 

我supose array_keys因爲$ ARR在第二個維度的ID值不會在這裏工作。

那麼,我該如何做這項工作?

對不起,我的英語不好,謝謝。

回答

5

array_column將創建一個二維數組的特定列中的所有元素的數組,並且array_count_values將計數數組中每個值的重複。

$newArr = array_count_values(array_column($ids, 'id')); 
+0

如何將它應用於我的代碼? –

+0

只需按照原樣使用它,並使用包含原始數組的變量。 – Barmar

+0

工程!太多了。 –

1

或者做手工像這樣的地方$arr是您的源陣列和$sums是你的結果陣列。

$sums = array(); 
foreach($arr as $vv){ 
    $v = $vv["id"]; 
    If(!array_key_exists($v,$sums){ 
     $sums[$v] = 0; 
    } 
    $sums[$v]++; 
} 
0

可以遍歷您的陣列,並總結了ID外觀,live demo

$counts = []; 
foreach($array as $v) 
{ 
    @$counts[$v['id']] += 1; 
} 
print_r($counts); 
相關問題