手动排序带有字符串的PHP数组?
我想对数组进行排序,数组中的名称作为键,数字作为值,每个数组都有一个按键和按值排序的函数 我知道asort()和ksort(),但我想手动执行此操作。起初我尝试了气泡排序,但很快意识到它不起作用,因为键是字符串,而不是数字 我该怎么做呢?如果我有数组:手动排序带有字符串的PHP数组?,php,arrays,sorting,key,Php,Arrays,Sorting,Key,我想对数组进行排序,数组中的名称作为键,数字作为值,每个数组都有一个按键和按值排序的函数 我知道asort()和ksort(),但我想手动执行此操作。起初我尝试了气泡排序,但很快意识到它不起作用,因为键是字符串,而不是数字 我该怎么做呢?如果我有数组: $ar = array("A" => 10, "D" => 25, "G" => 12) 如何按值和键对数组进行排序?我找不到一种方法来循环遍历它并对两个不同的值进行排序 此代码可能已被完全使用 $ar = array("A"
$ar = array("A" => 10, "D" => 25, "G" => 12)
如何按值和键对数组进行排序?我找不到一种方法来循环遍历它并对两个不同的值进行排序 此代码可能已被完全使用
$ar = array("A" => 10, "D" => 25, "G" => 12,'B'=>11);
function bubbleSortValues($array){ // sort by value
$new_array = array_values($array); // get array values
$length = count($new_array);
// perform buuble sort
for ($outer = 0; $outer < $length; $outer++) {
for ($inner = 0; $inner < $length; $inner++) {
if ($new_array[$outer] < $new_array[$inner]) {
$tmp = $new_array[$outer];
$new_array[$outer] = $new_array[$inner];
$new_array[$inner] = $tmp;
}
}
}
// loop the sorted array and generate original array with keys and values
foreach($new_array as $key=>$value){
$sorted_array[array_search($value, $array)] = $value;
}
return $sorted_array;
}
function bubbleSortKeys($array){ //sort by key
$new_array = array_keys($array); // get array keys
$length = count($new_array);
// perform buuble sort
for ($outer = 0; $outer < $length; $outer++) {
for ($inner = 0; $inner < $length; $inner++) {
if ($new_array[$outer] < $new_array[$inner]) {
$tmp = $new_array[$outer];
$new_array[$outer] = $new_array[$inner];
$new_array[$inner] = $tmp;
}
}
}
// loop the sorted array and generate original array with keys and values
foreach($new_array as $key=>$value){
$sorted_array[$value] = $array[$value];
}
return $sorted_array;
}
echo "<pre>";
$values = bubbleSortValues($ar);
print_r($values);
$keys = bubbleSortKeys($ar);
print_r($keys);
用于比较字符串 对于问题中的数组,您希望得到什么结果?无论原始asort()的结果是什么。因此,它将按从低到高的顺序对值进行排序。编辑:这同样适用于ksort()将生成的内容,因此它将按键按字母顺序对上述数组进行排序。如果键是“asd”、“frr”、“k”、“asd”等,这是否可行。
Array
(
[A] => 10
[B] => 11
[G] => 12
[D] => 25
)
Array
(
[A] => 10
[B] => 11
[D] => 25
[G] => 12
)