note 97143 deleted from function.sort by danbrown

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

« previous php.notes (#167688) next »