note 96752 deleted from function.sort by danbrown

From: Date: Fri, 06 Jan 2012 19:09:26 +0000
Subject: note 96752 deleted from function.sort by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-185402@lists.php.net to get a copy of this message
Note Submitter: SoftwareJonas ---- Use eval() with array_multisort() to sort multiple columns: <?php function multisort($array, $sort_by) { foreach ($array as $key => $value) { $evalstring = ''; foreach ($sort_by as $sort_field) { $tmp[$sort_field][$key] = $value[$sort_field]; $evalstring .= '$tmp[\'' . $sort_field . '\'], '; } } $evalstring .= '$array'; $evalstring = 'array_multisort(' . $evalstring . ');'; eval($evalstring); return $array; } $test = array( array( 'a' => '1', 'b' => '3'), array( 'a' => '2', 'b' => '1'), array( 'a' => '1', 'b' => '1')); echo 'Unsorted: '; print_r($test); $result = multisort( $test , array('a','b') ); echo 'Sorted: '; print_r($result); ?> Result: Unsorted: Array ( [0] => Array ( [a] => 1 [b] => 3 ) [1] => Array ( [a] => 2 [b] => 1 ) [2] => Array ( [a] => 1 [b] => 1 ) ) Sorted: Array ( [0] => Array ( [a] => 1 [b] => 1 ) [1] => Array ( [a] => 1 [b] => 3 ) [2] => Array ( [a] => 2 [b] => 1 ) )

« previous php.notes (#185402) next »