note 96381 deleted from function.sort by danbrown

From: 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

« previous php.notes (#166327) next »