排序PHP数组升序

时间:2016-05-31 22:13:02

标签: php algorithm sorting

尝试按升序对PHP数组进行排序,但失去抓地力

<?php

$array = [4,5,63,2,1,66,43];
$count = count($array);
$counter = 0;
for ($i=0; $i < count($array); $i++) {
    if($counter > 100)
        break;
    if($array[$i] < $array[$i + 1]) {
        continue;
    } else {
        $now_i = $array[$i];
        unset($array[$i]);
        $array[] = $now_i;
        $array = array_values($array);
        $i = 0;
    }
    print_r($array);
    $counter++;
}

//最终得到这个数组

Array
(
    [0] => 4
    [1] => 1
    [2] => 2
    [3] => 5
    [4] => 43
    [5] => 63
    [6] => 66
)

我会很感激,如果我花了4个小时思考什么是错误的话,一些冠军会解决这个问题。

由于

3 个答案:

答案 0 :(得分:1)

您正在设置$i = 0;但是循环会增加它!你应该把它设置为-1。

<?php

$array = [4,5,63,2,1,66,43];
$count = count($array);
$counter = 0;
for ($i=0; $i < count($array); $i++) {
    if($counter > 100)
        break;
    // this ends the program when complete
    if (!isset($array[$i + 1])) exit;
    if($array[$i] < $array[$i + 1]) {
        continue;
    } else {
        $now_i = $array[$i];
        unset($array[$i]);
        $array[] = $now_i;
        $array = array_values($array);
        // this is the fix
        $i = -1;
    }
    print_r($array);
    $counter++;
}

答案 1 :(得分:0)

$array = [4,5,63,2,1,66,43];
sort($array);
echo "<pre>".print_r($array,1)."</pre>";
Array
(
[0] => 1
[1] => 2
[2] => 4
[3] => 5
[4] => 43
[5] => 63
[6] => 66
)

答案 2 :(得分:-1)

请尝试以下代码

$array = [4,5,63,2,1,66,43];
sort($array);
$len = count($array);

for($x=0;$x<$len;$x++)
{
    echo $array[$x];
    echo '<br>';
}

输出 1 2 4 五 43 63 66