note 97143 deleted from function.sort by danbrown
| From: | danbrown@php.net | Date: | Sun, 04 Apr 2010 16:01:52 +0000 |
| Subject: | note 97143 deleted from function.sort by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-167688@lists.php.net to get a copy of this message | ||
Note Submitter: Oleg Khorev
----
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));