PHP 教程 在线

589PHP For 循环

使用for循环,实现冒泡排序:

<?php
$arr = array(5,3,6,2,8,10);
for($i = count($arr)-1;$i>=0;$i--){
    for($j = 0 ; $j < $i ; $j++){
        if($arr[$j+1] > $arr[$j] ){
            $aa = $arr[$j+1];
            $arr[$j+1] = $arr[$j];
            $arr[$j] = $aa;
        }
    }
}
print_r($arr);
?>

588PHP 数组排序

插入排序:

<?php
$x = array(5,3,4,9,10,22,1,-2,4); 
echo "排序前数组:" . PHP_EOL;
print_r($x);
function SortInsert(array $arr)
{
    for($i=0;$i<count($arr)-1;$i++)
        for($j=$i+1;$j<count($arr);$j++)
        {
            if($arr[$j]<$arr[$i])
            {
                $temp=$arr[$j];
                $arr[$j]=$arr[$i];
                $arr[$i]=$temp;
            }
        }
    return $arr;
}

echo "排序后数组:" . PHP_EOL;
$x=SortInsert($x);
print_r($x);
?>

587PHP 数组排序

写两个冒泡排序:

<?php
//升序
$myArray=array(10,11,9,12,8);
for ($i=0;$i<count($myArray)-1;$i++){
    for ($j=0;$j<count($myArray)-$i-1;$j++){
            if($myArray[$j]>$myArray[$j+1]){
            //把大的往后移
            $temp=$myArray[$j];
            $myArray[$j]=$myArray[$j+1];
            $myArray[$j+1]=$temp;
        }
    }
}
print_r($myArray);
echo "<br>";
//降序
$myArray2=array(11,12,13,9,14,15);
for ($i=0;$i<count($myArray2)-1;$i++){
    for ($j=0;$j<count($myArray2)-$i-1;$j++){
        if ($myArray2[$j]<$myArray2[$j+1]){
            //把小的数往后移
            $temp=$myArray2[$j];
            $myArray2[$j]=$myArray2[$j+1];
            $myArray2[$j+1]=$temp;
        }
    }
}
print_r($myArray2);
?>

586PHP 数组排序

使用 PHP 写一个冒泡排序算法:
<?php
// 从大到小排序
$numArray =array(3,2,6,5,8,10);
$numCount = count($numArray);
for($i=$numCount-1;$i>=0;$i--){
    for($j=0;$j<$i;$j++){
        if($numArray[$j]< $numArray[$j+1]){
            $aa = $numArray[$j+1];
            $numArray[$j+1]=$numArray[$j];
            $numArray[$j]=$aa;
        }
    }
}

print_r($numArray);
?>

585PHP 数组

关于上面笔记中的回答:

疑问:“数组排序时发现 sort 与 rsort 排序完毕以后,var_dump 输出时原有 key 值丢失,变为数字索引。”

正解:关联数组进行升序和降序排列应使用

  • asort() - 根据关联数组的值,对数组进行升序排列
  • ksort() - 根据关联数组的键,对数组进行升序排列
  • arsort() - 根据关联数组的值,对数组进行降序排列
  • krsort() - 根据关联数组的键,对数组进行降序排列

下面就上面例题用asort()函数,根据关联数组的值,对数组进行升序排列

<?php
$a=array("key1"=>"val1","key6"=>"val6","key3"=>"val1","key5"=>"val6","key4"=>"val8");
echo "asort(\$a)=".PHP_EOL;
asort($a);
var_dump($a);
?>

输出如下:

asort($a)=
array(5) {
  ["key1"]=>
  string(4) "val1"
  ["key3"]=>
  string(4) "val1"
  ["key6"]=>
  string(4) "val6"
  ["key5"]=>
  string(4) "val6"
  ["key4"]=>
  string(4) "val8"
}