note 34619 deleted from function.asort by didou
| From: | didou@php.net | Date: | Wed, 28 Jan 2004 11:31:57 +0000 |
| Subject: | note 34619 deleted from function.asort by didou | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-64308@lists.php.net to get a copy of this message | ||
Note Submitter: ms@zircular.dk
----
I also experienced that asort discards any order of keys, which was a big problem for me at one
time, and I did these functions to sort the keys after running asort on the array:
<?php
function ch_array($arr){
$i=0;
foreach($arr as $key=>$value){
if($i==0){
$prev_value = $value;
$prev_key = $key;
$i++;
}else{
if($value == $prev_value && $key < $prev_key){
}else{
$i++;
}
$prev_value = $value;
$prev_key = $key;
}
}
if($i == count($arr)){
return true;
}else{
return false;
}
}
function sort_array($arr){
$tmp = array();
$start = true;
foreach($arr as $key => $value){
if($start){
$prev_key = $key;
$prev_value = $value;
$start = false;
}else{
if($value == $prev_value){
if($key > $prev_key){
$tmp[$prev_key] = $prev_value;
$prev_key = $key;
$prev_value = $value;
}else{
$tmp[$key] = $value;
}
}else{
$tmp[$prev_key] = $prev_value;
$prev_key = $key;
$prev_value = $value;
}
}
}
$tmp[$prev_key] = $prev_value;
return $tmp;
}
$fruits =
array('apple','banana','banana','lemon','apple');
print_r($fruits);
/*result
Array
(
[0] => apple
[1] => banana
[2] => banana
[3] => lemon
[4] => apple
)
*/
asort($fruits);
print_r($fruits);
/*result
Array
(
[4] => apple
[0] => apple
[2] => banana
[1] => banana
[3] => lemon
)
*/
while(!ch_array($fruits)){
$fruits = sort_array($fruits);
}
print_r($fruits);
/*result
Array
(
[0] => apple
[4] => apple
[1] => banana
[2] => banana
[3] => lemon
)
*/
?>