首页 > 解决方案 > 如何正确存储数组的重复键

问题描述

$statues是来自 twitter api 响应的多个对象的数组。

$status->retweeted_status->user->screen_name是 Twitter 帐户的用户名。

$status->retweeted_status->user->profile_image_url_https是该用户的图像。

我想要的是:

  1. 店铺用户名
  2. 商店图片网址
  3. COUNT这个用户重复了多少次

据我所知,不可能有重复的键进入关联数组,所以我写下了这段代码:

$vector = [];

foreach($statuses as $status ){
      
        if(array_key_exists ( $status->retweeted_status->user->screen_name ,$vector)){
            $vector[$status->retweeted_status->user->screen_name]['cont'] = $vector[$status->retweeted_status->user->screen_name]['cont'] + 1;
        
        } else{
            $vector[$status->retweeted_status->user->screen_name] = array(
                'img' => str_replace('_normal','_400x400',$status->retweeted_status->user->profile_image_url_https),
                'cont' => 1
            );
        }
      


    }

结果如下: 在此处输入图像描述

没关系,但我想知道:

  1. 有没有更好的方法来存储用户名、图像以及计算该用户出现的次数(优化我的代码)?

  2. 如何订购数组以首先显示重复次数最多的用户,最后显示重复次数较少的用户(Descendent)?

谢谢!!

标签: phparraysoptimizationcountstore

解决方案


要计算用户,我认为您要查找的内容在这里:Countoccurrence of duplicate items in array

基本上使用array_count_values. 如果需要,还有其他内置数组函数可以为您订购数组。


推荐阅读