SortColumn
การเรียงลำดับแอเรย์หลายมิติ เช่น แอเรย์ข้อมูลของ webboard text ที่ผมใช้งานอยู่ หรือมีลักษณะดังโค้ด
<?
$webboard[] = array( 'wb_id'=>4 , 'wb_topic'=> 'topic1' );
$webboard[] = array( 'wb_id'=>5 , 'wb_topic'=> 'topic2' );
$webboard[] = array( 'wb_id'=>2 , 'wb_topic'=> 'topic3' );
$webboard[] = array( 'wb_id'=>1 , 'wb_topic'=> 'topic4' );
?>
$array = แอเรย์ของข้อมูล ที่ข้อมูลต้องเป็นแอเรย์ที่มีสมาชิกไม่น้อยกว่า $column
$column = สมาชิกของตัวแปรลำดับที่ต้องการใช้เปรียบเทียบ
$sortasc = เรียงลำดับจากน้อยไปหามาก (true)
$first, $last ตัวแปรสองตัวนี้เรียกครั้งแรกไม่ต้องใส่
{
$keys = array_keys($array);
if($last == -2) $last = count($array) - 1;
if($last > $first) {
$alpha = $first;
$omega = $last;
$key_alpha = $keys[$alpha];
$key_omega = $keys[$omega];
$guess = $array[$key_alpha][$column];
while($omega >= $alpha) {
if($sortasc) {
while($array[$key_alpha][$column] < $guess) {$alpha++; $key_alpha = $keys[$alpha]; }
while($array[$key_omega][$column] > $guess) {$omega--; $key_omega = $keys[$omega]; }
} else {
while($array[$key_alpha][$column] > $guess) {$alpha++; $key_alpha = $keys[$alpha]; }
while($array[$key_omega][$column] < $guess) {$omega--; $key_omega = $keys[$omega]; }
}
if($alpha > $omega) break;
$temporary = $array[$key_alpha];
$array[$key_alpha] = $array[$key_omega];
$alpha++;
$key_alpha = $keys[$alpha];
$array[$key_omega] = $temporary;
$omega--;
$key_omega = $keys[$omega];
}
sortcolumn($array, $column, $sortasc, $first, $omega);
sortcolumn($array, $column, $sortasc, $alpha, $last);
}
};
การเรียงลำดับแอเรย์ตามชื่อฟิลด์ครับ โดยการกำหนด ค่า $name เป็นชื่อของฟิลด์ที่จะใช้เป็น key เช่น
sortcolumn( $webboard , 'wb_id' );
ตัวอย่าง เป็นการเรียงลำดับข้อมูลในแอเรย์ webboard ตาม id จากข้อมูลข้างบน
<?
sortcolumn( $webboard , 'wb_id' );
print_r( $webboard );
?>