note 53779 added to function.array-multisort
| From: | kencomer at kencomer dot com | Date: | Mon, 13 Jun 2005 06:48:39 +0000 |
| Subject: | note 53779 added to function.array-multisort | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-90340@lists.php.net to get a copy of this message | ||
If your data is in an associative array that you would need to separate into columns such as those
retrieved with your favorite flavor of _fetch_array() in order to be able to use multisort(), you
should consider using uasort() or usort() as an alternative. Here is an example of how this could be
beneficial:
(key is employee number which remains intact; rows are sorted by surname, firstname)
<?php
function namecmp( $row1,$row2 )
{
$first = strcmp($row1['surname'], $row2['surname']) ;
if ( $first )
return $first ;
else
return strcmp($row1['name'], $row2['name']) ;
}
$test = array( '11122202' =>
array('empno'=>11122202,'name'=>'geezer'
,'surname'=>'schmidt','age'=>96,'sex'=>'male')
,'11122204' =>
array('empno'=>11122204,'name'=>'coed'
,'surname'=>'beaujolais','age'=>18,'sex'=>'female')
,'11122206' =>
array('empno'=>11122206,'name'=>'immortal'
,'surname'=>'ramos','age'=>21,'sex'=>'male')
,'11122208' =>
array('empno'=>11122208,'name'=>'babyface'
,'surname'=>'brown','age'=>1,'sex'=>'male')
,'11122210' =>
array('empno'=>11122210,'name'=>'exjock'
,'surname'=>'gatti','age'=>48,'sex'=>'male')
,'11122212' =>
array('empno'=>11122212,'name'=>'jailbait'
,'surname'=>'muhammed','age'=>15,'sex'=>'female')
)
;
echo "<pre>" ;
print_r( $test ) ;
uasort($test,'namecmp') ;
echo "----sorting----<br \>";
print_r( $test ) ;
echo "</pre>" ;
?>
Array
(
[11122202] => Array
(
[empno] => 11122202
[name] => geezer
[surname] => schmidt
[age] => 96
[sex] => male
)
[11122204] => Array
(
[empno] => 11122204
[name] => coed
[surname] => beaujolais
[age] => 18
[sex] => female
)
[11122206] => Array
(
[empno] => 11122206
[name] => immortal
[surname] => ramos
[age] => 21
[sex] => male
)
[11122208] => Array
(
[empno] => 11122208
[name] => babyface
[surname] => brown
[age] => 1
[sex] => male
)
[11122210] => Array
(
[empno] => 11122210
[name] => exjock
[surname] => gatti
[age] => 48
[sex] => male
)
[11122212] => Array
(
[empno] => 11122212
[name] => jailbait
[surname] => muhammed
[age] => 15
[sex] => female
)
)
----sorting----
Array
(
[11122204] => Array
(
[empno] => 11122204
[name] => coed
[surname] => beaujolais
[age] => 18
[sex] => female
)
[11122208] => Array
(
[empno] => 11122208
[name] => babyface
[surname] => brown
[age] => 1
[sex] => male
)
[11122210] => Array
(
[empno] => 11122210
[name] => exjock
[surname] => gatti
[age] => 48
[sex] => male
)
[11122212] => Array
(
[empno] => 11122212
[name] => jailbait
[surname] => muhammed
[age] => 15
[sex] => female
)
[11122206] => Array
(
[empno] => 11122206
[name] => immortal
[surname] => ramos
[age] => 21
[sex] => male
)
[11122202] => Array
(
[empno] => 11122202
[name] => geezer
[surname] => schmidt
[age] => 96
[sex] => male
)
)
----
Manual Page -- http://www.php.net/manual/en/function.array-multisort.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+53779
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+53779&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+53779&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+53779&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+53779&report=yes&reason=useless
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+53779&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+53779&report=yes
Search -- http://master.php.net/manage/user-notes.php