在先前的文章中我們介紹了使用冒泡演算法對數組元素進行升序排序的方法,感興趣的可以點擊連結進行查閱→《PHP數組學習之使用冒泡演算法對元素進行升序排序! 》。這次我們繼續PHP陣列學習系列,介紹一下比較陣列元素,取得第一大和第二大值的方法。
本文的主題是:「給出一組數字,計算出它的最大值和第二大值」。
實現想法:使用陣列來包裹這一組數字,因此這裡會涉及到了比較數組元素的大小
設定兩個變數$max
和$secMax
,用於存放取得到的最大值和第二大值。不過需要先給大家賦初值,將陣列第一個元素和第二個元素賦給它們。但要保證$max
比$secMax
大,所以要做一個判斷
if ($arr[0] > $arr[1]){//这个if是为了防止出现数组第一个值就是最大值 $secMax = $arr[1]; } else if ($arr[0] < $arr[1]){ $max = $arr[1]; }
然後使用for循環,不斷遍歷$arr數組。 【不懂的可以閱讀文章《PHP迴圈學習三:如何使用for迴圈語句遍歷數組》】
for ($i = 0;$i< count($arr);$i++){ //循环数组 //循环体 }
在循環體中,不斷將$max
# 、$secMax
與陣列每個值($arr[$i]
)比較:
如果$arr[$ i]
比$max
大,則將$max
值賦給$secMax
,把$arr[$i]
賦給$max
,
if ($arr[$i] > $max){ $secMax = $max; $max = $arr[$i]; }
#而如果$arr[$i]
小於$ max
,但$arr[$i]
又大於$secMax
,則只交換$secMax
和$arr[$i]
間的值,將$arr[$i]
複製給$secMax
。
if ($arr[$i] < $max && $arr[$i] > $secMax){ $secMax = $arr[$i]; }
這樣不斷比較下去,就可以確保$max存放著數組最大值,$secMax存放著數組第二大值。
我們來看看完整的實作程式碼:
function takeNum($arr){ //定义了两个变量$max和$secMax来存放最大和第二大的数值 $max = $arr[0]; $secMax = $arr[0]; if ($arr[0] > $arr[1]){//这个if是为了防止出现数组第一个值就是最大值 $secMax = $arr[1]; } else if ($arr[0] < $arr[1]){ $max = $arr[1]; } for ($i = 0;$i< count($arr);$i++){//循环数组 if ($arr[$i] > $max){ $secMax = $max; $max = $arr[$i]; } else if ($arr[$i] < $max && $arr[$i] > $secMax){ $secMax = $arr[$i]; } } echo "最大值为".$max.",第二大值为".$secMax; }
測試一下:定義了下面一個數組,呼叫takeNum($arr)函數來看看輸出狀況
##
$arr = array(555,5,1,429,18,21,52,2,52,9,3,); takeNum($arr);可以看出第一大值為555,第二大值為429;看看輸出結果是不是這個: OK,輸出結果是正確的。 接下來我們來聊聊所使用的知識點,循環就不必多說了(可以閱讀文章《
PHP循環學習系列大匯總》),下面給大家簡單介紹一下if else 語句。
if else 語句是流程控制中根據條件判斷執行的一種。該語句執行時先對條件進行判斷,然後根據判斷結果做出對應的操作。它又可以細分為三種,分別是 if 語句、if...else 語句、if...else if...else 語句。 if 語句的語法:if (判断条件) { 语句块; }if...else 語句的語法:
if (判断条件) { 语句块 1; } else { 语句块 2; }if...else if...else 語句的語法:
if (判断条件 1) { 语句块 1; } else if (判断条件 2) { 语句块 2; } else if (判断条件 3) { 语句块 3; } ......好了就說到這裡了,有其他想知道的,可以點擊這個哦。 → →最後推薦給大家一個PHP陣列的免費影片教學:
PHP函數之array陣列函數影片講解,快來學習吧!
以上是PHP數組學習比較數組元素,取得第一大和第二大值的詳細內容。更多資訊請關注PHP中文網其他相關文章!