Сложная логика массива PHP - PullRequest
0 голосов
/ 06 апреля 2011

Мне нужно найти способ узнать, какие продукты были заказаны чаще всего, а затем вернуть массив из первых 5 'post_id'.

Это массив различных заказов, которые содержат информацию о продукте:

Array
(
    [1] => Array
        (
            [post_id] => 1
            [post_ident] => macbook_pro
            [post_name] => Macbook Pro
            [post_parent_ident] => rings
            [post_cat_ident] => default
            [post_module_ident] => store
            [post_price] => 999.00
            [post_currency] => EUR
            [item_link] => index.php?module=store&show=post&category=default&parent=rings&post=macbook_pro
            [qty] => 1
        )

)

Array
(
    [1] => Array
        (
            [post_id] => 1
            [post_ident] => macbook_pro
            [post_name] => Macbook Pro
            [post_parent_ident] => rings
            [post_cat_ident] => default
            [post_module_ident] => store
            [post_price] => 999.00
            [post_currency] => EUR
            [item_link] => index.php?module=store&show=post&category=default&parent=rings&post=macbook_pro
            [qty] => 1
        )

)

Array
(
    [1] => Array
        (
            [post_id] => 1
            [post_ident] => macbook_pro
            [post_name] => Macbook Pro
            [post_parent_ident] => rings
            [post_cat_ident] => default
            [post_module_ident] => store
            [post_price] => 999.00
            [post_currency] => EUR
            [item_link] => index.php?module=store&show=post&category=default&parent=rings&post=macbook_pro
            [qty] => 1
        )

)

Как определить, какие продукты больше всего в массиве?

Например, продукт с post_id 1 находится в массиве 3 раза. Как бы мне это посчитать, а затем вернуть post_id в качестве первого элемента в массиве?

1 Ответ

5 голосов
/ 06 апреля 2011
$result = array();
foreach($array as $value)
{
   $postId = $value[1]['post_id'];
   if(isset($result[$postId])){
      $result[$postId]++;     // increment count of post id if already exists in result
   }
   else{
      $result[$postId] = 1;    // start count for post id
   }  
}

$keys = array_keys(asort($result));   // sort the array and find all the keys
echo $keys[count($keys)-1];           // last key will be the answer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...