排序PHP数组没有ksort


Sorting PHP array without ksort

我试图在不使用ksort的情况下手动排序PHP数组。

这是我的代码现在的样子:

function my_ksort(&$arg){
    foreach($arg as $key1 => $value1){
      foreach($arg as $key2 => $value2){
        if($key1 > $key2){
          $aux = $value2;
          $arg[$key2] = $value1;
          $arg[$key1] = $aux;
        }
      }
    }
}

它不排序,我不知道怎么让它排序

你可以试试:

function my_ksort(&$arg)
    {
    $keys=array_keys($arg);
    sort($keys);
    foreach($keys as $key)
        {
        $val=$arg[$key];
        unset($arg[$key]);
        $arg[$key]=$val;
        }
    }

我分别对键进行排序,然后逐个删除元素,并按升序将它们附加到末尾。

我正在使用另一个排序函数(sort()),但是如果您想从仿真中消除所有可用的排序函数,那么sort()更容易仿真。事实上,@crypticous的算法就是这么做的!

此函数返回ASC格式的数组。考虑到我使用的是(PHP 5 >= 5.3.0)

中支持的goto
function ascending_array($array){
    if (!is_array($array)){
        $array = explode(",", $array);
    }
    $new = array();
    $flag = true;
    iter:
        $array = array_values($array); // recount array values with new offsets
        (isset($min["max"])) ? $min["value"] = $min["max"] : $min["value"] = $array[0];
        $min["offset"] = 0;
        for ($i=0;$i<count($array);$i++){
            if ($array[$i] < $min["value"]){ // redefine min values each time if statement executed
                $min["value"] = $array[$i];
                $min["offset"] = $i;
            }
            if ($flag){ // execute only first time
                if ($array[$i] > $min["value"]){ // define max value from array
                    $min["max"] = $array[$i];
                }
                $flag = false;
            }
            if ($i === (count($array)-1)){ // last array element
                array_push($new,$min["value"]);
                unset($array[$min["offset"]]);
            }
        }
    if (count($array)!=0){
        goto iter;
    }
    print_r($new);
}
$arr = array(50,25,98,45);
ascending_array($arr); // 25 45 50 98

p。当我在研究php时,我写了这个函数,现在记得我有它(这就是为什么我真的不记得我在做什么,尽管事实是它工作正常,希望也有评论),希望你会喜欢:)

我正在检查与这篇文章相关的一些问题,我想给出我的见解!下面是我要实现php的sort的代码:

$array_res = array();
$array = array(50,25,98,45);
$i=0;
 $temp = $array[0];
 $key = array_search($temp, $array);
while ($i<count($array)-1){
     $temp = $array[0];
    for($n=0;$n<count($array) ;$n++)
    {
        if($array[$n]< $temp && $array[$n] != -1 )
        {
             $temp = $array[$n];
        }
        else{continue;}
    }
//get the index for later deletion
$key = array_search($temp, $array);

array_push($array_res, $temp);
/// flag on those which were ordered
$array[$key] =-1;
$i++;
}
// lastly append the highest number 
for($n=0;$n<count($array) ;$n++)
        {
            if ($array[$n] != -1)
            array_push($array_res, $array[$n]);
        }
// display the results
print_r($array_res);

这段代码将显示([0] => 25[1] => 45[2] => 50[3] => 98)

短小精练

function custom_ksort($arg)
{
    $keys = array_keys($arg);
    sort($keys);
    foreach($keys as $newV)
    {
        $newArr[$newV] = $arg[$newV];
    }
    return $newArr;
}