<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 數組,排序和查找 ### 定義數組: #### 方式一: ` $a=array(2,3,5);` #### 方式二: ~~~ $a[0]=2; $a[1]=3; $a[2]=5; ~~~ #### 方式三: `$a=array('key1'=>2,'key2'=3,'key3'=5);` ### 細節說明: * 鍵key可以是一個整數或字符串,不是這種類型會被強制轉換 * 值可以是任意類型 * 如果鍵名重復,會被覆蓋 * 鍵名:true自動轉為1,false自動轉為0,null等同于空字符串,小數會自動截斷小數部分 * 不能用數組和對象作為Key ~~~ $a=array(8.3=>111,true=>2222,false=>3333,null=>4444); print_r($a); ~~~ ~~~ $arr=array(); for($i=0;$i<100;$i++){ $arr[]=rand(100,200); } ~~~ 例子: ~~~ $a=array(3,4,6,1); $b=0; for($i=0;$i<count($a);$i++){ $b+=$a[i]; } echo $b; ~~~ ### 數組使用:增刪改查 * 索引數組:$a[2]; * 關聯數組:$a['logo']; * 不存在的數組鍵值提示notice錯誤 * key如果不指定或為空,會自動增長 ### 數組遍歷 ~~~ for ($i=0; $i < ; $i++) { # code... } foreach ($variable as $key => $value) { # code... } ~~~ 使用foreach替代模板中的導航: ~~~ <?php foreach($arr as $val): ?> <li><a href="#"><?php echo $val; ?></a></li> <?php endforeach;?> ~~~ ### 數組常用函數: 1. count($arr); 數組統計 3. is_array(); 判斷是否是數組 5. print_r(); 顯示數組 7. var_dump(); 顯示數組,并給出每個值的類型 9. sort(); 對字符串數組排序,從第一個字符開始,按字符串的ascii碼排序,第一個相同,比較第二個;如果是數字,從小到大排序 11. usort();用戶自定義函數對數組排序,改變原數組 sort_regular sort_numeric sort_string ~~~ $arr=array('dssssd','ddd3s','aaaaaa','z','44'); function mysort($str1,$str2){ if(strlen($str1)==strlen($str2)){ return 0; }else{ return strlen($str1)>strlen($str2)?1:-1; } } usort($arr,'mysort'); ~~~ 1. arrar_merge(); 合并多個數組,按順序拼接,相同關聯鍵名會被覆蓋; 如果是數字鍵名,不會覆蓋,會自動增加 ~~~ $arr=array('dssssd','ddd3s','aaaaaa','z','44'); $arr2=array(2,54,6); $arr3=array_merge($arr,$arr2); ~~~ 1. array_reverse(); 顛倒數組順序,不改變原數組 1. array_search(); 找到返回該鍵名key,找不到返回false echo array_search('d',$arr); 1. array_push; 插入一個值,返回新的數組長度 1. array_pop;將數組最后一個值去掉,返回刪掉的值 ~~~ $arr=array('dssssd','ddd3s','aaaaaa','z','44'); echo array_pop($arr); echo array_push($arr,'11111','22222'); echo "<pre>"; print_r($arr); ~~~ 1. range(); 創建一個數組,從某范圍的值,步長默認為1 range(0,100,5); //0-100之間的數組,步長為5 ### 數組的刪除: * 刪除某個鍵值對,數組不會重建索引,那個索引位置留空 unset($arr[1]); * 刪除整個數組: unset($arr); * 數組分配機制: 檢測空間使用了多大內存:memory_get_usage(); 把數組賦值給另一個數組,新的數據空間,并沒有馬上分配,除非你修改了新的數組的某個值。 ### 數組運算符: ~~~ + 聯合,重復鍵值的忽略,不會覆蓋,沒有的就會拼接上。 == 相同的鍵,值。不會對值的類型進行比較 === !== <> 不等 != 不等 ~~~ ## 數組方法: * 內部排序(在內存中排序) 交換式,選擇式,插入式 * 外部排序(數據量過大,無法在內存中排序,借助外部存儲) 合并排序,直接合并排序 1. 交換式排序: * 冒泡法 * 快速法 ~~~ function mysort(&$arr){ for ($i=0; $i <count($arr)-1; $i++) { for($j=0;$j<count($arr)-1-$i;$j++){ if($arr[$j]>$arr[$j+1]){ $temp=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$temp; } } } } ~~~ ### 冒泡排序的優化: ~~~ if($flag==0){ break; }else{ $flag=0; } ~~~ ### 選擇排序法 ~~~ for ($i=0; $i <count($arr)-1 ; $i++) { $max=$arr[$i]; $max_index=$i; for ($j=$i+1; $j <count($arr) ; $j++) { if ($max<$arr[$j]) { $max=$arr[$j]; $max_index=$j; } } $arr[$max_index]=$arr[$i]; $arr[$i]=$max; } ~~~ ### 插入排序 ### 快速排序 ### 順序查找 ~~~ function search(&$arr,$val){ $flag=0; for ($i=0; $i <count($arr) ; $i++) { if($arr[$i]==$val){ $flag=1; echo '找到了,下標為:'.$i; } } if($flag==0){ echo "找不到數據"; } } ~~~ ### 二分法查找 ~~~ function search($left_index,$right_index,$arr,$val){ if($left_index>$right_index){ echo "找不到數據"; return; } $mid_index=round(($left_index+$right_index)/2); if($val==$arr[$mid_index]){ echo "找到數據".$mid_index; return; }else if($val<$arr[$mid_index]){ search($left_index,$mid_index-1,$arr,$val); }else if($val>$arr[$mid_index]){ search($mid_index+1,$right_index,$arr,$val); } } $arr=array(1,3,5,7,8,10,12); search(0,count($arr)-1,$arr,7); ~~~ ### 二維數組的遍歷 ~~~ $arr=array(array(2,5,6),array(6,3),'ddd'); $arrsize1=count($arr); for ($i=0; $i <$arrsize1 ; $i++) { if(is_array($arr[$i])){ for ($j=0; $j <count($arr[$i]) ; $j++) { echo $arr[$i][$j]; } echo "<br>"; }else{ echo $arr[$i]; } } echo "<hr>"; foreach ($arr as $key => $value) { if(is_array($arr[$i])){ foreach ($value as $key2 => $value2) { echo $value2; } } echo "<br>"; } ~~~ ### 插入排序法 ![](https://box.kancloud.cn/cb0f5374398a87884f25627dc3c278d6_431x254.png) ### 快速排序法 ![](https://box.kancloud.cn/fa520ee1ad36467c9f034d2921c563bf_373x112.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看