note 96381 deleted from function.sort by danbrown
| From: | danbrown@php.net | Date: | Wed, 24 Feb 2010 16:30:04 +0000 |
| Subject: | note 96381 deleted from function.sort by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-166327@lists.php.net to get a copy of this message | ||
Note Submitter: boozingg at ya dot ru
----
Work 100%
<?
# 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', 0);
echo '<pre>';
exit(print_R($array));
?>
#
# Output
#
Array
(
[c] => Array
(
[abc] => 15.39
[qwerty] => 123
)
[a] => Array
(
[abc] => 10.39
[qwerty] => 123
)
[d] => Array
(
[abc] => 5.39
[qwerty] => 123
)
)
1
Otherwise for "1" direction
Array
(
[d] => Array
(
[abc] => 5.39
[qwerty] => 123
)
[a] => Array
(
[abc] => 10.39
[qwerty] => 123
)
[c] => Array
(
[abc] => 15.39
[qwerty] => 123
)
)
1
-hd