note 104988 added to function.usort
| From: | bcsj at osu1 dot php dot net | Date: | Wed, 20 Jul 2011 21:02:47 +0000 |
| Subject: | note 104988 added to function.usort | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-181727@lists.php.net to get a copy of this message | ||
Here is an addition to the solution for sorting multidimensional arrays, which I wrote up nearly a
month ago.
Say you want to sort a multidimensional array by a key several layers down:
$a[$key1][$key2][$key3][...][$keyN];
This "upgrade" should allow you to handle multiple "depths":
<?php
$keys = array($key1,$key2,$key3,...,$keyN);
uasort($array, array(new cmp( $keys ), "cmp__") );
class cmp {
var $key;
function __construct($key) {
$this->key = $key;
}
function cmp__($a,$b) {
$key = $this->key;
if ($this->dive($a,$key) == $this->dive($b,$key)) return 0;
return (($this->dive($a,$key) > $this->dive($b,$key)) ? 1 : -1);
}
function dive($var,$keys) {
if (count($keys) == 1)
return $var[$keys[0]];
else
return $this->dive($var[array_shift($keys)],$keys);
}
}
?>
----
Server IP: 69.147.83.197
Probable Submitter: 2.105.83.122
----
Manual Page -- http://www.php.net/manual/en/function.usort.php
Edit -- https://master.php.net/note/edit/104988
Del: integrated -- https://master.php.net/note/delete/104988/integrated
Del: useless -- https://master.php.net/note/delete/104988/useless
Del: bad code -- https://master.php.net/note/delete/104988/bad+code
Del: spam -- https://master.php.net/note/delete/104988/spam
Del: non-english -- https://master.php.net/note/delete/104988/non-english
Del: in docs -- https://master.php.net/note/delete/104988/in+docs
Del: other reasons-- https://master.php.net/note/delete/104988
Reject -- https://master.php.net/note/reject/104988
Search -- https://master.php.net/manage/user-notes.php