PHP 使用 array_multisort 对二维数组按某一指定字段进行排序

学习笔记 马富天 2016-12-12 21:20:24 77 0

【摘要】由于写了一个整站的网络爬虫,我想将爬取到的所有 url 按照 url 阿拉伯字母的顺序进行排序,然而这是一个二维数组,然后我网上百度了一个二维数组排序的基本方法,使用 array_multisort 对二维数组进行按字段排序,本文给出示例。

首先关于 array_multisort 函数这里不多说了,想要了解有关于它更多的信息,查阅 PHP 学习手册即可。本文仅给出示例。

二维数组 $urls 中,要按照 url 进行排序,如下:

  1. $urls = array
  2. (
  3.     array
  4.     (  
  5.         'id'   => 1,  
  6.         'url' => 'http://www.mafutian.net/1.html',
  7.         'httpcode'  => '200',
  8.     ),  
  9.     array
  10.     (
  11.         'id'   => 2,  
  12.         'url' => 'http://www.mafutian.net/5.html',
  13.         'httpcode'  => '200',
  14.     ),  
  15.     array
  16.     (
  17.         'id'   => 3,  
  18.         'url' => 'http://www.mafutian.net/4.html',
  19.         'httpcode'  => '200',
  20.     ),  
  21.     array
  22.     (
  23.         'id'   => 4,  
  24.         'url' => 'http://www.mafutian.net/3.html',
  25.         'httpcode'  => '200',
  26.     ),  
  27.     array
  28.     (
  29.         'id'   => 5,  
  30.         'url' => 'http://www.mafutian.net/2.html',
  31.         'httpcode'  => '200',
  32.     ),  
  33. ); 
  34. var_dump($urls);
  35. //  下面代码实现:
  36. $arr_url = array();  
  37. foreach($urls as $k => $v)
  38. {
  39.     $arr_url[$k] = $v['url'];
  40. }  
  41. array_multisort($arr_url,SORT_ASC,SORT_STRING,$urls);  
  42. var_dump($urls);
  1. /*
  2. 输出:
  3. array (size=5)
  4.   0 => 
  5.     array (size=3)
  6.       'id' => int 1
  7.       'url' => string 'http://www.mafutian.net/1.html' (length=30)
  8.       'httpcode' => string '200' (length=3)
  9.   1 => 
  10.     array (size=3)
  11.       'id' => int 5
  12.       'url' => string 'http://www.mafutian.net/2.html' (length=30)
  13.       'httpcode' => string '200' (length=3)
  14.   2 => 
  15.     array (size=3)
  16.       'id' => int 4
  17.       'url' => string 'http://www.mafutian.net/3.html' (length=30)
  18.       'httpcode' => string '200' (length=3)
  19.   3 => 
  20.     array (size=3)
  21.       'id' => int 3
  22.       'url' => string 'http://www.mafutian.net/4.html' (length=30)
  23.       'httpcode' => string '200' (length=3)
  24.   4 => 
  25.     array (size=3)
  26.       'id' => int 2
  27.       'url' => string 'http://www.mafutian.net/5.html' (length=30)
  28.       'httpcode' => string '200' (length=3)
  29. */

这里的重点就是,先把要排序的字段的所有值存到一个一维数组中,然后就可以使用 array_multisort 这个函数,将数组按照 key 进行排序了,当然,这里的排序你完全可以不适用 array_multisort 这个函数,仅仅通过 foreach 遍历也能达到这个效果,但是既然 php 开发者给我们提供了更好的办法,我们就可以省去不必要的麻烦了。

版权归 马富天PHP博客 所有

本文标题:《PHP 使用 array_multisort 对二维数组按某一指定字段进行排序》

本文链接地址:http://www.mafutian.net/236.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 allow_url_include 简介及示例 》 下一篇《 PHP 正则匹配页面中 form 表单所有元素的类型及属性值 》
分享到:

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码