php怎麼找出陣列最小的幾個元素

2022-10-17 22:01:28

實現步驟:1、利用asort()函數對陣列按照鍵值進升序排序,語法「asort(原陣列)」,排序後最小的元素就集中在陣列的開頭;2、利用array_slice()函數從陣列開頭擷取N個最小元素即可,語法「array_slice(排序後陣列,0,N)」。

php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:

本教學操作環境:windows7系統、PHP8.1版、DELL G3電腦

在PHP中,可以利用asort()函數和array_slice()函數來找出陣列最小的N個元素。

實現思想:

  • 將陣列重新排序,陣列元素從小到大的升序排序。(這樣最小的元素就在陣列的開頭)

  • 直接從陣列kait擷取N個陣列元素即可。

實現步驟:

1、利用asort()函數對陣列按照鍵值進升序排序

<?php
header('content-type:text/html;charset=utf-8');   
$arr=array(34,3,-1,-6,42,12,1);
echo "原陣列:";
var_dump($arr);
asort($arr);
echo "升序排序後:";
var_dump($arr);
?>
登入後複製

1.png

可以看到,排序後,最小的元素就在陣列的開頭,只需要按照需要擷取指定個數即可。

步驟2:利用array_slice()函數從陣列開頭擷取N個元素

array_slice()函數是PHP提供的用來擷取陣列的一個函數

想要從陣列開頭擷取N個元素,只需要將第二個引數設定為0,第三個引數設定為元素個數N即可。

array_slice(排序後陣列,0,N)
登入後複製

範例:獲取陣列最小的2個、3個、4個元素

<?php
header('content-type:text/html;charset=utf-8');   
$arr=array(34,3,-1,-6,42,12,1);
echo "原陣列:";
var_dump($arr);
asort($arr);
echo "升序排序後:";
var_dump($arr);

echo "獲取陣列最小的2個元素:";
$result = array_slice($arr,0,2); //擷取陣列前2位的元素
var_dump($result);

echo "獲取陣列最小的3個元素:";
$result = array_slice($arr,0,3); //擷取陣列前3位的元素
var_dump($result);

echo "獲取陣列最小的4個元素:";
$result = array_slice($arr,0,4); //擷取陣列前3位的元素
var_dump($result);

?>
登入後複製

2.png

擴充套件知識:函數介紹

1、asort()函數

asort()函數會根據關聯陣列的鍵值進行升序排序,且不會修改原陣列中的鍵名。

asort($array,$sortingtype)
登入後複製

asort()函數有兩個引數:$array(必須)和$sortingtype(可省略)。

其中,$sortingtype引數用來定義函數排序的模式,指定如何比較陣列的元素/專案,預設值為「SORT_REGULAR」。

$sortingtype引數可以設定為下面這些值:

  • 0 = SORT_REGULAR:正常比較陣列元素,不改變其型別(預設值);

  • 1 = SORT_NUMERIC:將陣列元素當作數位來處理;

  • 2 = SORT_STRING:將陣列元素當作字串來處理;

  • 3 = SORT_LOCALE_STRING:基於當前的區域設定(可通過 setlocale()進行更改),把陣列元素當作字串比較。

  • 4 = SORT_NATURAL:和 natsort() 類似對每個陣列元素以「自然的順序」對字串進行排序,是 PHP5.4.0 中新增的。

  • 5 = SORT_FLAG_CASE:能夠與 SORT_STRING 或 SORT_NATURAL 合併(OR 位運算),不區分大小寫排序字串。

2、array_slice()函數

array_slice()函數可以從陣列中提取出一個片段

array array_slice ( array $arr , int $start [, int $length = NULL [, bool $preserve_keys = false ]] )
登入後複製

引數說明:

  • arr 表示要擷取的陣列。
  • start 表示開始擷取的位置(下標):
    • 如果 start 為正數,則從前往後擷取。
    • 如果 start 為負數,則從距離 arr 末端 -start 的位置開始,從後往前擷取。例如 -2 意味著從陣列的倒數第二個元素開始。
  • length 是可選引數,表示擷取長度:
    • 如果 length 為正數,那麼表示擷取的元素個數;
    • 如果 length 為負數,那麼擷取的片段將終止在距離陣列末端 length 的位置;
    • 如果省略,那麼將從 start 位置開始,一直擷取到陣列的末尾。
  • preserve_keys 是可選引數,規定是否保留原來的鍵名,預設為 false,也即不保留;如果設定為 true,將保留原有的鍵名。

注:array_slice()函數不會改變原陣列

範例1:引數$start

<?php
header("Content-type:text/html;charset=utf-8");
$arr = array(10,12,20,25,24);
echo "原陣列:";
var_dump($arr); 

echo "擷取的陣列片段:";
$result = array_slice($arr,2);
var_dump($result);

$result = array_slice($arr,-2);
var_dump($result);
?>
登入後複製

3.png

範例2:引數$length

<?php
header("Content-type:text/html;charset=utf-8");
$arr = array(10,12,20,25,24);
echo "原陣列:";
var_dump($arr); 

echo "擷取的陣列片段:";
$result = array_slice($arr,1,1);
var_dump($result);

$result = array_slice($arr,1,-1);
var_dump($result);
?>
登入後複製

4.png

範例3:引數$preserve

表示是否保留原來的鍵名,預設值為false,也即不保留;如果設定為 true,將保留原有的鍵名。

<?php
header("Content-type:text/html;charset=utf-8");
$arr = array(10,12,20,25,24);
echo "原陣列:";
var_dump($arr); 

echo "擷取的陣列片段:";
$result = array_slice($arr,1,1,true);
var_dump($result);

$result = array_slice($arr,1,-1,true);
var_dump($result);
?>
登入後複製

5.png

推薦學習:《》

以上就是php怎麼找出陣列最小的幾個元素的詳細內容,更多請關注TW511.COM其它相關文章!