亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php查找數組元素各種方法總結

2024-09-04 11:45:48
字體:
來源:轉載
供稿:網友

在php中數據查詢可以分類一維數組查找與多維數組查找了,如果是簡單的一維數組我們可以直接使用in_array,array_search 與遍歷來實例了,如果是多維數組就需要使用其它辦法。

對于一維數組我們可以如下操作:

in_array 函數在數組中搜索給定的值,in_array(value,array,type) type 可選,如果設置該參數為 true,則檢查搜索的數據與數組的值的類型是否相同。

array_key_exists() 函數判斷某個數組中是否存在指定的 key,如果該 key 存在,則返回 true,否則返回 false,array_key_exists(key,array)

array_search() 函數與 in_array() 一樣,在數組中查找一個鍵值。如果找到了該值,匹配元素的鍵名會被返回。如果沒找到,則返回 false。array_search(value,array,strict)

從這里來看,在數據量不大的時候,比如小于1000,查找用哪一種都行,都不會成為瓶頸;當數據量比較大的時候,用array_key_exists比較合適,當然這里array_key_exists占用的內存比較大,經測算二分法查找數組是否包含某一元素,兼容正反序,代碼實現:

  1. <?php 
  2. $searchValue = (int)$_GET['key']; 
  3. function search(array $array$value
  4. $max = count($array)-1; 
  5. $min = 0; 
  6. $isAscSort = $array[$min] < $array[$max]; 
  7. while (TRUE) { 
  8. $sum = $min+$max
  9. $midKey = (int)($sum%2 == 1 ? ceil($sum/2) : $sum/2); 
  10. if ($max < $min) { 
  11. return -1; 
  12. else if ($value == $array[$midKey]) { 
  13. return 1; 
  14. else if ($value > $array[$midKey]) { 
  15. $isAscSort ? $min = $midKey+1 : $max = $midKey-1; 
  16. else if ($value < $array[$midKey]) { 
  17. $isAscSort ? $max = $midKey-1 : $min = $midKey+1; 
  18. $array = array
  19. '4''5''7''8''9''10''11''12' 
  20. ); 
  21. // 正序 
  22. echo search($array$searchValue); 
  23. // 逆序 
  24. rsort($array); 
  25. echo search($array$searchValue); 

例二,PHP 查找數組第i小元素,代碼如下:

  1. <?php 
  2.      #隨機選擇第i小的數字,用隨機快排實現 
  3.       
  4.      #交換元素 
  5.      function swap(&$arr$i$j) { 
  6.          $temp = $arr[$i]; 
  7.          $arr[$i] = $arr[$j]; 
  8.          $arr[$j] = $temp
  9.      } 
  10.  
  11.      #隨機劃分 
  12.      function randomized_partition(&$arr$begin$end) { 
  13.          $rand_inx = rand($begin$end); 
  14.          swap($arr$begin$rand_inx); 
  15.          return partition($arr$begin$end); 
  16.      } 
  17.  
  18.      #劃分 
  19.      function partition(&$arr$begin$end) { 
  20.          #以第一個元素作為中樞元素 
  21.          $pivot = $begin
  22.          $low = $begin
  23.          $high = $end
  24.  
  25.          while ($low < $high) { 
  26.              while ($low < $high && $arr[$low] <= $arr[$pivot]) { 
  27.                  $low++; 
  28.              } 
  29.  
  30.              while ($low < $high && $arr[$high] >= $arr[$pivot]) { 
  31.                  $high--; 
  32.              } 
  33.  
  34.              swap($arr$low$high); 
  35.          } 
  36.  
  37.          #交換中樞元素 
  38.          if ($arr[$pivot] < $arr[$low]) { 
  39.              $low--; 
  40.          } 
  41.          swap($arr$pivot$low); 
  42.          return $low
  43.      } 
  44.  
  45.      #快速排序,此處沒用到 
  46.      function quick_sort(&$arr$begin$end) { 
  47.          $q = randomized_partition($arr$begin$end); 
  48.          if ($q > $begin) { 
  49.              quick_sort($arr$begin$q - 1); 
  50.          } 
  51.          if ($q < $end) { 
  52.              quick_sort($arr$q + 1, $end); 
  53.          } 
  54.      } 
  55.  
  56.      #選取第i小的數 
  57.      function randomized_select(&$arr$begin$end$i) { 
  58.          if ($begin == $end) { 
  59.              return $arr[$begin]; 
  60.          } 
  61.  
  62.          $q = randomized_partition($arr$begin$end); 
  63.          $k = $q - $begin + 1; #k代表小于等于q的元素個數 
  64.  
  65.          if ($k == $i) { #如果k=i,說明q就是第i小的元素坐標 
  66.              return $arr[$q]; 
  67.          } else if ($i < $k) { #如果i<k,說明第i小的元素位于q的左邊 
  68.              return randomized_select($arr$begin$q - 1, $i); 
  69.          } else { #第i小的元素位于q的右邊,此時查找右邊的第i-k小的元素 
  70.              return randomized_select($arr$q + 1, $end$i - $k); 
  71.          } 
  72.      } 
  73.  
  74.      $arr = array(1, 5, 3, 7, 0, 0, 8, 4, 2, 9, 11); 
  75.      $t = randomized_select($arr, 0, count($arr) - 1, 8); 
  76.      print_r("The 8th minimum element: {$t}"); 
  77.      echo "<br>"
  78.      quick_sort($arr, 0, count($arr) - 1); 
  79.      print_r($arr); 
  80.  ?>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人在线观看| 亚洲综合中文字幕在线观看| 欧美激情xxxx性bbbb| 欧美一区二区.| 国模视频一区二区三区| 欧美黄色片在线观看| 一本色道久久88亚洲综合88| 国产精品国产福利国产秒拍| 国产视频亚洲视频| 国内精品久久久久影院 日本资源| 日韩人在线观看| 日韩在线观看你懂的| 欧美激情乱人伦| 国产精品久久久久久亚洲调教| 俺去啦;欧美日韩| 日韩欧美国产高清91| 国产精品久久久久久久久久尿| 亚洲人成啪啪网站| 国产精品美女主播| 久久男人av资源网站| 亚洲第一av在线| 日韩欧美国产骚| 久久久久久久久久久免费精品| 日韩有码视频在线| 永久免费毛片在线播放不卡| 国产精品成av人在线视午夜片| 国产欧亚日韩视频| 亚洲精品网站在线播放gif| 欧美日韩免费观看中文| 欧美成人精品激情在线观看| 久久久久一本一区二区青青蜜月| 精品视频在线播放| 宅男66日本亚洲欧美视频| 国产91免费观看| 日韩在线视频观看正片免费网站| 日韩暖暖在线视频| 2019亚洲男人天堂| 国产+成+人+亚洲欧洲| 国产精品视频免费观看www| 国产一区二区动漫| 久久久www成人免费精品张筱雨| 成人欧美一区二区三区在线| 成人免费在线视频网站| 日韩成人激情影院| 成人免费视频在线观看超级碰| 日韩精品中文字幕在线观看| 国产精品视频大全| 久久久国产视频91| 欧美中文字幕在线视频| 欧美激情喷水视频| 国产精品高清在线观看| 黄色一区二区在线观看| 日韩久久精品成人| 中文字幕亚洲综合| 欧美日韩中文字幕在线| 成人激情视频免费在线| 57pao成人永久免费视频| 久久久久久国产精品美女| 91精品久久久久久久久久入口| 91av视频在线免费观看| 亚洲日本中文字幕免费在线不卡| 2019av中文字幕| 日韩精品在线第一页| 亚洲综合日韩中文字幕v在线| 欧美老女人xx| 精品女同一区二区三区在线播放| 亚洲欧洲激情在线| 欧美激情中文字幕乱码免费| 5566日本婷婷色中文字幕97| 国模私拍一区二区三区| 色偷偷91综合久久噜噜| 国产成人涩涩涩视频在线观看| 91精品国产91久久久久福利| 国产成+人+综合+亚洲欧美丁香花| 最新91在线视频| 国产亚洲综合久久| 国产精品精品久久久久久| 欧美日韩性生活视频| 欧美性猛交xxxx富婆弯腰| 美女999久久久精品视频| 国内揄拍国内精品少妇国语| 欧美中文在线免费| 欧美性猛交xxxx乱大交3| 色综合老司机第九色激情| 亚洲欧美在线磁力| 97在线免费视频| 国产精品久久久久久搜索| 日韩中文字幕视频| 国产精品成人一区二区三区吃奶| 欧美性开放视频| 国产精品电影在线观看| 欧美日韩免费区域视频在线观看| www.99久久热国产日韩欧美.com| 亚洲精品在线不卡| 成人一区二区电影| 欧美日韩在线免费观看| 国产日韩在线亚洲字幕中文| 中文字幕精品在线| www.xxxx精品| 久久天天躁狠狠躁夜夜躁| 亚洲va欧美va国产综合剧情| 成人a免费视频| 亚洲欧美日韩天堂| 国产伦精品一区二区三区精品视频| 欧美黑人xxxx| 色综合导航网站| 国产精品自拍偷拍| 欧美午夜女人视频在线| 国产综合视频在线观看| 欧美电影免费看| 国产成人福利夜色影视| 国产精品劲爆视频| 国产精品黄页免费高清在线观看| 国产日韩精品在线播放| 国产精品9999| 爽爽爽爽爽爽爽成人免费观看| 欧美在线一区二区三区四| 在线电影中文日韩| 欧美一区深夜视频| 亚洲欧洲成视频免费观看| 亚洲欧美精品一区| 欧美激情久久久久| 成人国产精品日本在线| 欧美精品在线免费播放| 在线观看欧美www| 亚洲黄色av网站| 2021久久精品国产99国产精品| 久久久精品国产亚洲| 91精品综合久久久久久五月天| 性色av一区二区三区红粉影视| 亚洲无亚洲人成网站77777| 国产精品海角社区在线观看| 性欧美办公室18xxxxhd| 精品一区二区三区四区| 综合欧美国产视频二区| 日韩中文娱乐网| 日本欧美一二三区| 国产色综合天天综合网| 久久6免费高清热精品| 国产精品久久9| 国产精品一久久香蕉国产线看观看| 国产久一一精品| 久久久久中文字幕2018| 国产91对白在线播放| 久久夜色精品国产欧美乱| 欧美在线播放视频| 亚洲欧美日韩第一区| 亚洲aⅴ男人的天堂在线观看| 国产精品老女人视频| 国产精品亚洲视频在线观看| 欧美大胆在线视频| 久久久在线视频| 精品福利一区二区| 欧美日韩久久久久| 国产欧美一区二区三区在线看| 国产偷亚洲偷欧美偷精品| 精品无人国产偷自产在线| 欧美—级高清免费播放| 国产999精品久久久影片官网| 久久久久久久91| 亚洲欧美日本伦理| xvideos亚洲| 狠狠做深爱婷婷久久综合一区| 欧美日韩亚洲一区二区|