dongliang1865 2014-05-23 06:53
浏览 25
已采纳

显示基于另一个数组排序的数组

I have 2 arrays

Array 1 : $agents = Array('abc','xyz','pqr');
Array 2 : $tot_calls = Array ('10','5','20');

Here array 2 reflects total calls made by agents in $agents array respectively. i.e Agent abc made 10 calls , Agent xyz made 5 calls and so on.

I want the resultant array to display agents sorted(DESCENDING) by the number of calls they made

i.e $result = Array('pqr','abc','xyz'); // Here the resulting array is sorted on the max calls they made.

  • 写回答

2条回答 默认 最新

  • douzhengnao8265 2014-05-23 06:57
    关注

    You can combine array_combine() the krsort() on this particular situation. Consider this example:

    $agents = Array('abc','xyz','pqr');
    $tot_calls = Array ('10','5','20');
    // calls become the keys and agents become the values
    $sorted_values = array_combine($tot_calls, $agents);
    krsort($sorted_values); // sort them by keys
    
    print_r($sorted_values);
    
    // maybe if you want to clear the keys
    $sorted_values = array_values($sorted_values);
    

    Sample Fiddle

    EDIT:

    Alternatively, @Satish made a good point about it. To avoid the same key issue (well maybe, at least if there are no agent name collision). You can use this instead (just the other way around):

    $agents = Array('abc','xyz','pqr');
    $tot_calls = Array ('10','5','20');
    // agents become keys and calls become values
    $sorted_values = array_combine($agents, $tot_calls);
    arsort($sorted_values);
    $sorted_values = array_keys($sorted_values);
    
    print_r($sorted_values);
    

    Sample Fiddle

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)