尝试按升序对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个小时思考什么是错误的话,一些冠军会解决这个问题。
由于
答案 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