设为首页收藏本站language 语言切换
查看: 1504|回复: 0
收起左侧

PHP中二维数组的排序方法

[复制链接]
发表于 2010-2-24 13:37:25 | 显示全部楼层 |阅读模式
<p>&lt;?php<br />/**<br />* @package     BugFree<br />* @version     &#36;Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp &#36;<br />*<br />*<br />* Sort an two-dimension array by some level two items use array_multisort() function.<br />*<br />* sysSortArray(&#36;Array,&quot;Key1&quot;,&quot;SORT_ASC&quot;,&quot;SORT_RETULAR&quot;,&quot;Key2&quot;……)<br />* @author                      Chunsheng Wang &lt;wwccss@263.net&gt;<br />* @param  array   &#36;ArrayData   the array to sort.<br />* @param  string  &#36;KeyName1    the first item to sort by.<br />* @param  string  &#36;SortOrder1  the order to sort by(&quot;SORT_ASC&quot;|&quot;SORT_DESC&quot;)<br />* @param  string  &#36;SortType1   the sort type(&quot;SORT_REGULAR&quot;|&quot;SORT_NUMERIC&quot;|&quot;SORT_STRING&quot;)<br />* @return array                sorted array.<br />*/<br />function sysSortArray(&#36;ArrayData,&#36;KeyName1,&#36;SortOrder1 = &quot;SORT_ASC&quot;,&#36;SortType1 = &quot;SORT_REGULAR&quot;)<br />&#123;<br />    if(!is_array(&#36;ArrayData))<br />    &#123;<br />        return &#36;ArrayData;<br />    &#125;<br /> <br />    // Get args number.<br />    &#36;ArgCount = func_num_args();<br /> <br />    // Get keys to sort by_and_put them to SortRule array.<br />    for(&#36;I = 1;&#36;I &lt; &#36;ArgCount;&#36;I ++)<br />    &#123;<br />        &#36;Arg = func_get_arg(&#36;I);<br />        if(!eregi(&quot;SORT&quot;,&#36;Arg))<br />        &#123;<br />            &#36;KeyNameList[] = &#36;Arg;<br />            &#36;SortRule[]    = '&#36;'.&#36;Arg;<br />        &#125;<br />        else<br />        &#123;<br />            &#36;SortRule[]    = &#36;Arg;<br />        &#125;<br />    &#125;<br /> <br />    // Get the values according to the keys_and_put them to array.<br />    foreach(&#36;ArrayData AS &#36;Key =&gt; &#36;Info)<br />    &#123;<br />        foreach(&#36;KeyNameList AS &#36;KeyName)<br />        &#123;<br />            &#36;&#123;&#36;KeyName&#125;[&#36;Key] = &#36;Info[&#36;KeyName];<br />        &#125;<br />    &#125;<br /> <br />    // Create the eval string_and_eval it.<br />    &#36;EvalString = 'array_multisort('.join(&quot;,&quot;,&#36;SortRule).',&#36;ArrayData);';<br />    eval (&#36;EvalString);<br />    return &#36;ArrayData;<br />&#125;<br /> <br /> <br />//################# 示例 #################<br />&#36;arr = array(<br />    array(<br />        'name'        =&gt;    '学习',<br />        'size'        =&gt;    '1235',<br />        'type'        =&gt;    'jpe',<br />        'time'        =&gt;    '1921-11-13',<br />        'class'        =&gt;    'dd',<br />    ),<br />    array(<br />        'name'        =&gt;    '中国功夫',<br />        'size'        =&gt;    '153',<br />        'type'        =&gt;    'jpe',<br />        'time'        =&gt;    '2005-11-13',<br />        'class'        =&gt;    'jj',<br />    ),<br />    array(<br />        'name'        =&gt;    '编程',<br />        'size'        =&gt;    '35',<br />        'type'        =&gt;    'gif',<br />        'time'        =&gt;    '1997-11-13',<br />        'class'        =&gt;    'dd',<br />    ),<br />    array(<br />        'name'        =&gt;    '中国功夫',<br />        'size'        =&gt;    '65',<br />        'type'        =&gt;    'jpe',<br />        'time'        =&gt;    '1925-02-13',<br />        'class'        =&gt;    'yy',<br />    ),<br />    array(<br />        'name'        =&gt;    '中国功夫',<br />        'size'        =&gt;    '5',<br />        'type'        =&gt;    'icon',<br />        'time'        =&gt;    '1967-12-13',<br />        'class'        =&gt;    'rr',<br />    ),<br />);<br /> <br />print_r(&#36;arr);<br /> <br />//注意:按照数字方式排序时 153 比 65 小<br />&#36;temp = sysSortArray(&#36;arr,&quot;name&quot;,&quot;SORT_ASC&quot;,&quot;type&quot;,&quot;SORT_DESC&quot;,&quot;size&quot;,&quot;SORT_ASC&quot;,&quot;SORT_STRING&quot;);<br /> <br />print_r(&#36;temp);<br /> <br />?&gt;<br /></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-6 07:15 , Processed in 0.074333 second(s), 23 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表