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 的新手 ..我希望你能提供帮助

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 回答