要求:按数组的键值排序。
不能使用内置函数。我想了好久,在网上也没找到。

解决方案 »

  1.   

    是所有的函数都不能用?.......
    还是就是不能用ksort?.......krsort能不能用?.......
    sort,asort能不能用?......
    uasort,uksort,usort能不能用?......
    min,max能不能用?
    >, <, isset,empty能不能用?
      

  2.   


    //刚接触时,练手写的
    //默认ASC,升序,DESC,降序$arr = array('3' => '三', '1' => '二', '4' => array('3' => '三', '1' => '二', '9' => '九', '8' => '八', '6' => array('5' => '五', '2' => '二', '4' => '四'), '7' => '七'));
    print_r(keySortArray($arr, 'ASC'));function keySortArray($arr = array(), $desc = 'ASC')
    {
    $desc = strtoupper(trim($desc));
    if(!is_array($arr))
    {
    return $arr;
    }
    $keyArray = array();
    foreach($arr AS $k => $v)
    {
    $keyArray[] = $k;
    }
    $n=count($keyArray);

    for($i=0;$i<$n;$i++)
    {
    for($j=$i+1;$j<$n;$j++)
    {
    if($desc == 'ASC')
    {
    if($keyArray[$i] > $keyArray[$j])
    {
    $temp = $keyArray[$i];
    $keyArray[$i] = $keyArray[$j];
    $keyArray[$j] = $temp;
    }
    }
    else
    {
    if($keyArray[$i] < $keyArray[$j])
    {
    $temp = $keyArray[$i];
    $keyArray[$i] = $keyArray[$j];
    $keyArray[$j] = $temp;
    }
    }
    }
    if(is_array($arr[$keyArray[$i]]))
    {
    $arr[$keyArray[$i]] = keySortArray($arr[$keyArray[$i]], $desc);
    }
    }
    foreach($keyArray AS $v)
    {
    $res[$v] = $arr[$v];
    }
    return $res;
    }