note 71185 added to function.sort

From: Date: Wed, 15 Nov 2006 15:24:13 +0000
Subject: note 71185 added to function.sort
Groups: php.notes 
Request: Send a blank email to php-notes+get-119750@lists.php.net to get a copy of this message
/** * Will sort an array by the value of the applied lambda function to each element * without loosing the keys! * @param unknown_type $arr * @param unknown_type $func of the form mixvar func(your object) */ function sortByFunc(&$arr, $func) { $tmpArr = array(); foreach ($arr as $k => &$e) { $tmpArr[] = array('f' => $func($e), 'k' => $k, 'e' =>&$e); } sort($tmpArr); $arr = array(); foreach($tmpArr as &$fke) { $arr[$fke['k']] = &$fke['e']; } } example: $arr = array( 1 => array('name' => 'eran', 'age' => 30), 2 => array('name' => 'naama', 'age' => 29), 3 => array('name' => 'a', 'age' => 11), 4 => array('name' => 'b', 'age' => 51), 5 => array('name' => 'z', 'age' => 5), ); foreach($arr as $key => $val) { echo "<br> $key => (" . $val['name'] . " ," . $val['age'] . ")"; } sortByFunc($arr,create_function('$element','return $element["age"];')); echo "<br> now sorted:"; foreach($arr as $key => $val) { echo "<br> $key => (" . $val['name'] . " ," . $val['age'] . ")"; } output: 1 => (eran ,30) 2 => (naama ,29) 3 => (a ,11) 4 => (b ,51) 5 => (z ,5) now sorted: 5 => (z ,5) 3 => (a ,11) 2 => (naama ,29) 1 => (eran ,30) 4 => (b ,51) ---- Server IP: 192.117.122.43 Probable Submitter: 85.64.251.8 ---- Manual Page -- http://www.php.net/manual/en/function.sort.php Edit -- https://master.php.net/note/edit/71185 Del: integrated -- https://master.php.net/note/delete/71185/integrated Del: useless -- https://master.php.net/note/delete/71185/useless Del: bad code -- https://master.php.net/note/delete/71185/bad+code Del: spam -- https://master.php.net/note/delete/71185/spam Del: non-english -- https://master.php.net/note/delete/71185/non-english Del: in docs -- https://master.php.net/note/delete/71185/in+docs Del: other reasons-- https://master.php.net/note/delete/71185 Reject -- https://master.php.net/note/reject/71185 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#119750) next »