您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關PHP中有哪些多維數組排序算法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
<?php //有一個多維數組 $a = array( array('key1'=>940, 'key2'=>'blah'), array('key1'=>23, 'key2'=>'this'), array('key1'=>894, 'key2'=>'that') ); //那么怎么對key1或者key2進行排序呢,這里就需要使用到usort($arr, 'myfunction')函數了,它的作用是對$arr使用我們自定義的方法進行排序,具體使用方法可以查看手冊 //1.對key1的值進行排序 function asc_key1_sort($x, $y) { //可以輸出一下看看是怎么比較的 echo 'Iteration:'.$x['key1'].' vs '.$y['key1']; if($x['key1'] > $y['key1']) { echo 'true<br/>'; return true; }elseif($x['key1'] < $y['key1']) { echo 'false<br/>'; return false; }else { echo '0'; return 0; } } //進行排序 usort($a, 'asc_key1_sort'); var_dump($a); //2.對key2字符進行排序 function asc_key2_sort($x, $y) { //可以使用strcasecmp()函數進行排序 echo 'Iteration:'.$x['key2'].' vs '.$y['key2'].'<br/>'; return strcasecmp($x['key2'], $y['key2']); } //進行排序 usort($a, 'asc_key2_sort'); var_dump($a); ?>
運行結果:
Iteration:23 vs 940false Iteration:894 vs 23true Iteration:940 vs 23true Iteration:894 vs 940false array(3) { [0]=> array(2) { ["key1"]=> int(23) ["key2"]=> string(4) "this" } [1]=> array(2) { ["key1"]=> int(894) ["key2"]=> string(4) "that" } [2]=> array(2) { ["key1"]=> int(940) ["key2"]=> string(4) "blah" } } Iteration:that vs this Iteration:blah vs that array(3) { [0]=> array(2) { ["key1"]=> int(940) ["key2"]=> string(4) "blah" } [1]=> array(2) { ["key1"]=> int(894) ["key2"]=> string(4) "that" } [2]=> array(2) { ["key1"]=> int(23) ["key2"]=> string(4) "this" } }
如果我的多維數組中也有key值呢?
<?php //有一個多維數組 $a = array( 123 => array('key1'=>940, 'key2'=>'blah'), 349 => array('key1'=>23, 'key2'=>'this'), 43 => array('key1'=>894, 'key2'=>'that') ); //那么怎么對key1或者key2進行排序呢,這里就需要使用到usort($arr, 'myfunction')函數了,它的作用是對$arr使用我們自定義的方法進行排序,具體使用方法可以查看手冊 //1.對key1的值進行排序 function asc_key1_sort($x, $y) { //可以輸出一下看看是怎么比較的 echo 'Iteration:'.$x['key1'].' vs '.$y['key1']; if($x['key1'] > $y['key1']) { echo 'true<br/>'; return true; }elseif($x['key1'] < $y['key1']) { echo 'false<br/>'; return false; }else { echo '0'; return 0; } } //進行排序 usort($a, 'asc_key1_sort'); var_dump($a); //2.對key2字符進行排序 function asc_key2_sort($x, $y) { //可以使用strcasecmp()函數進行排序 echo 'Iteration:'.$x['key2'].' vs '.$y['key2'].'<br/>'; return strcasecmp($x['key2'], $y['key2']); } //進行排序 usort($a, 'asc_key2_sort'); var_dump($a); ?>
運行結果:
Iteration:23 vs 940false Iteration:894 vs 23true Iteration:940 vs 23true Iteration:894 vs 940false array(3) { [0]=> array(2) { ["key1"]=> int(23) ["key2"]=> string(4) "this" } [1]=> array(2) { ["key1"]=> int(894) ["key2"]=> string(4) "that" } [2]=> array(2) { ["key1"]=> int(940) ["key2"]=> string(4) "blah" } } Iteration:that vs this Iteration:blah vs that array(3) { [0]=> array(2) { ["key1"]=> int(940) ["key2"]=> string(4) "blah" } [1]=> array(2) { ["key1"]=> int(894) ["key2"]=> string(4) "that" } [2]=> array(2) { ["key1"]=> int(23) ["key2"]=> string(4) "this" } }
看完上述內容,你們對PHP中有哪些多維數組排序算法有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。