0

同じ配列に複数回出現する要素をカウントするにはどうすればよいですか?

すでにarray_count_valuesを試しましたが、機能しませんでした。配列に複数のキーと値が含まれているためですか?

これは私の配列からの出力です(レストリスト)

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で新しいです..あなたが助けることができることを願っています

4

1 に答える 1

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);
于 2013-03-04T11:35:12.373 に答える