note 97143 added to function.sort
| From: | OlegKhorev at osu1 dot php dot net | Date: | Sun, 04 Apr 2010 11:10:34 +0000 |
| Subject: | note 97143 added to function.sort | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-167682@lists.php.net to get a copy of this message | ||
100% working function
# array
$array = array(
'a' => array(
'abc' => "10.39",
'qwerty' => "123",
),
'd' => array(
'abc' => "5.39",
'qwerty' => "123",
),
'c' => array(
'abc' => "15.39",
'qwerty' => "123",
),
);
# sort - abc or qwerty
# direction - 1/0 or true/false
function sort_by($array, $sort, $direction = 0) {
$tmp = array();
foreach ($array as $k=>$v) {
if (!empty($v[$sort]))
$tmp[$k] = $v[$sort];
}
if (!empty($direction)) {
$tmp2 = $tmp;
sort($tmp);
$tmp3 = array();
foreach ($tmp as $k=>$v) {
foreach ($tmp2 as $k2=>$v2) {
if ($v2 == $v) {
$tmp3[$k2] = $v;
}
}
}
$tmp4 = array();
if (!empty($array))
foreach ($array as $k=>$v) {
$found = false;
foreach ($tmp3 as $k2=>$v2)
if ($k2 == $k) {
$found = true;
}
if (!$found)
$tmp4[$k] = $v;
}
foreach ($tmp3 as $k=>$v)
$tmp4[$k] = $array[$k];
} else {
$tmp2 = $tmp;
rsort($tmp);
$tmp3 = array();
foreach ($tmp as $k=>$v) {
foreach ($tmp2 as $k2=>$v2) {
if ($v2 == $v) {
$tmp3[$k2] = $v;
}
}
}
$tmp4 = array();
foreach ($tmp3 as $k=>$v) {
$tmp4[$k] = $array[$k];
unset($array[$k]);
}
if (!empty($array))
foreach ($array as $k=>$v)
$tmp4[$k] = $v;
}
$array = $tmp4;
return $array;
}
$array = sort_by($array, 'abc', 1);
echo '<pre>';
exit(print_R($array));
----
Server IP: 195.54.192.44
Probable Submitter: 127.0.0.1
----
Manual Page -- http://www.php.net/manual/en/function.sort.php
Edit -- https://master.php.net/note/edit/97143
Del: integrated -- https://master.php.net/note/delete/97143/integrated
Del: useless -- https://master.php.net/note/delete/97143/useless
Del: bad code -- https://master.php.net/note/delete/97143/bad+code
Del: spam -- https://master.php.net/note/delete/97143/spam
Del: non-english -- https://master.php.net/note/delete/97143/non-english
Del: in docs -- https://master.php.net/note/delete/97143/in+docs
Del: other reasons-- https://master.php.net/note/delete/97143
Reject -- https://master.php.net/note/reject/97143
Search -- https://master.php.net/manage/user-notes.php