Home > Article > Backend Development > php 数组排序问题
<code>$arr = array( 'id' => 1, 'pid' => 0, 'title' => '1', 'id' => 2, 'pid' => 0, 'title' => '2', 'id' => 3, 'pid' => 0, 'title' => '3', 'id' => 4, 'pid' => 0, 'title' => '4', 'id' => 5, 'pid' => 1, 'title' => '1-5', 'id' => 6, 'pid' => 5, 'title' => '1-5-6', 'id' => 7, 'pid' => 1, 'title' => '1-7', 'id' => 8, 'pid' => 2, 'title' => '2-8', ); </code>
排序完效果
<code>$arr = array( 'id' => 1, 'pid' => 0, 'title' => '1', 'id' => 5, 'pid' => 1, 'title' => '1-5', 'id' => 6, 'pid' => 5, 'title' => '1-5-6', 'id' => 7, 'pid' => 1, 'title' => '1-7', 'id' => 2, 'pid' => 0, 'title' => '2', 'id' => 8, 'pid' => 2, 'title' => '2-8', 'id' => 3, 'pid' => 0, 'title' => '3', 'id' => 4, 'pid' => 0, 'title' => '4', ); </code>
就是父节点后面紧跟子节点
<code>$arr = array( 'id' => 1, 'pid' => 0, 'title' => '1', 'id' => 2, 'pid' => 0, 'title' => '2', 'id' => 3, 'pid' => 0, 'title' => '3', 'id' => 4, 'pid' => 0, 'title' => '4', 'id' => 5, 'pid' => 1, 'title' => '1-5', 'id' => 6, 'pid' => 5, 'title' => '1-5-6', 'id' => 7, 'pid' => 1, 'title' => '1-7', 'id' => 8, 'pid' => 2, 'title' => '2-8', ); </code>
排序完效果
<code>$arr = array( 'id' => 1, 'pid' => 0, 'title' => '1', 'id' => 5, 'pid' => 1, 'title' => '1-5', 'id' => 6, 'pid' => 5, 'title' => '1-5-6', 'id' => 7, 'pid' => 1, 'title' => '1-7', 'id' => 2, 'pid' => 0, 'title' => '2', 'id' => 8, 'pid' => 2, 'title' => '2-8', 'id' => 3, 'pid' => 0, 'title' => '3', 'id' => 4, 'pid' => 0, 'title' => '4', ); </code>
就是父节点后面紧跟子节点
<code><?php $arr = array( array('id' => 1, 'pid' => 0, 'title' => '1'), array('id' => 2, 'pid' => 0, 'title' => '2'), array('id' => 3, 'pid' => 0, 'title' => '3'), array('id' => 4, 'pid' => 0, 'title' => '4'), array('id' => 5, 'pid' => 1, 'title' => '1-5'), array('id' => 6, 'pid' => 5, 'title' => '1-5-6'), array('id' => 7, 'pid' => 1, 'title' => '1-7'), array('id' => 8, 'pid' => 2, 'title' => '2-8'), ); function userSort($a, $b) { $a = $a['title']; $b = $b['title']; if($a == $b) return 0; return $a>$b ? 1 : -1; } usort($arr, 'userSort'); echo " "; print_r($arr); </code>