2013-03-04 15 views
0

我如何計算一個元素,如果它在同一個數組中出現多次?我如何計算一個元素,如果它在同一個數組中出現多次?

我已經嘗試與array_count_values,但它沒有工作,是否因爲我有超過一個鍵和值在我的數組?

這是從我的陣列我的輸出(restlist)

Array ( 
[0] => Array ([restaurant_id] => 47523 [title] => cafe blabla) 
[1] => Array ([restaurant_id] => 32144 [title] => test5) 
[2] => Array ([restaurant_id] => 42154 [title] => blabla2) 
[3] => Array ([restaurant_id] => 32144 [title] => test5) 
[4] => Array ([restaurant_id] => 42154 [title] => blabla2) 
) 

我希望它計數相同的元素有多少次出現在我的數組,然後計數值添加到我的所謂新創建的「鑰匙」命中相同的數組。

Array ( 
[0] => Array ([restaurant_id] => 47523 [title] => cafe blabla [hits] => 1) 
[1] => Array ([restaurant_id] => 32144 [title] => test5 [hits] => 2) 
[2] => Array ([restaurant_id] => 42154 [title] => blabla2 [hits] => 2) 
) 

這就是我試圖做我想做的。

 foreach ($cooltransactions as $key) 
     { 
      $tempArrayOverRestaurants[]= $key['restaurant_id']; 
     } 

     $wordsRestaruants = array_count_values($tempArrayOverRestaurants); 
     arsort($wordsRestaruants); 

    foreach ($wordsRestaruants as $key1 => $value1) 
     { 

        $temprestaurantswithhits[] = array(
         'restaurant_id' => $key1, 
         'hits' => $value1);  
     } 

foreach ($restlistas $key) 
{ 
    foreach ($temprestaurantswithhits as $key1) 
    { 
     if($key['restaurant_id'] === $key1['restaurant_id']) 
     { 
         $nyspisestedsliste[] = array(
         'restaurant_id' => $key['restaurant_id'], 
         'title' => $key['title'], 
         'hits' => $key1['hits']); 
     } 
    } 
} 

我知道這可能是一個小白辦法做到我想要什麼,但我仍然在新php..I希望你能幫助

回答

1

剛剛與關聯數組嘗試:

$input = array(/* your input data*/); 
$output = array(); 

foreach ($input as $item) { 
    $id = $item['restaurant_id']; 

    if (!isset($output[$id])) { 
    $output[$id] = $item; 
    $output[$id]['hits'] = 1; 
    } else { 
    $output[$id]['hits']++; 
    } 
} 

如果你想重置密鑰,請執行:

$outputWithoutKeys = array_values($output); 
+0

感謝感謝$ hsz。它工作正常:D我會接受你在6分鐘內回答 – Zaz 2013-03-04 11:40:25

相關問題