在之前的文章中我們介紹了使用冒泡算法對(duì)數(shù)組元素進(jìn)行升序排序的方法,感興趣的可以點(diǎn)擊鏈接進(jìn)行查閱→《PHP數(shù)組學(xué)習(xí)之使用冒泡算法對(duì)元素進(jìn)行升序排序!》。這次我們繼續(xù)PHP數(shù)組學(xué)習(xí)系列,介紹一下比較數(shù)組元素,獲取第一大和第二大值的方法。
本文的主題是:“給出一組數(shù)字,計(jì)算出它的最大值和第二大值”。
實(shí)現(xiàn)思路:使用數(shù)組來包裹這一組數(shù)字,因而這里會(huì)涉及到了比較數(shù)組元素的大小
設(shè)置兩個(gè)變量$max
和$secMax
,用于存放獲取到的最大值和第二大值。不過需要先給大家賦初值,將數(shù)組第一個(gè)元素和第二個(gè)元素賦給它們。但要保證$max
比$secMax
大,所以要做一個(gè)判斷
if ($arr[0] > $arr[1]){//這個(gè)if是為了防止出現(xiàn)數(shù)組第一個(gè)值就是最大值 $secMax = $arr[1]; } else if ($arr[0] < $arr[1]){ $max = $arr[1]; }
然后使用for循環(huán),不斷遍歷$arr數(shù)組?!静欢目梢蚤喿x文章《PHP循環(huán)學(xué)習(xí)三:如何使用for循環(huán)語句遍歷數(shù)組》】
for ($i = 0;$i< count($arr);$i++){ //循環(huán)數(shù)組 //循環(huán)體 }
在循環(huán)體中,不斷將$max
、$secMax
與數(shù)組每個(gè)值($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]
復(fù)制給$secMax
。
if ($arr[$i] < $max && $arr[$i] > $secMax){ $secMax = $arr[$i]; }
這樣不斷比較下去,就可以確保$max存放著數(shù)組最大值,$secMax存放著數(shù)組第二大值。
我們來看看完整的實(shí)現(xiàn)代碼:
function takeNum($arr){ //定義了兩個(gè)變量$max和$secMax來存放最大和第二大的數(shù)值 $max = 0; $secMax = 0; if ($arr[0] > $arr[1]){//這個(gè)if是為了防止出現(xiàn)數(shù)組第一個(gè)值就是最大值 $secMax = $arr[1]; } else if ($arr[0] < $arr[1]){ $max = $arr[1]; } for ($i = 0;$i< count($arr);$i++){//循環(huán)數(shù)組 if ($arr[$i] > $max){ $secMax = $max; $max = $arr[$i]; } else if ($arr[$i] < $max && $arr[$i] > $secMax){ $secMax = $arr[$i]; } } echo "最大值為".$max.",第二大值為".$secMax; }
測試一下:定義了下面一個(gè)數(shù)組,調(diào)用takeNum($arr)函數(shù)來看看輸出情況
$arr = array(555,5,1,429,18,21,52,2,52,9,3,); takeNum($arr);
可以看出第一大值為555,第二大值為429;看看輸出結(jié)果是不是這個(gè):
OK,輸出結(jié)果是正確的。
接下來我們來聊聊使用到的知識(shí)點(diǎn),循環(huán)就不必多說了(可以閱讀文章《PHP循環(huán)學(xué)習(xí)系列大匯總》),下面給大家簡單介紹一下if else 語句。
if else 語句是流程控制中根據(jù)條件判斷執(zhí)行的一種。該語句執(zhí)行時(shí)先對(duì)條件進(jìn)行判斷,然后根據(jù)判斷結(jié)果做出相應(yīng)的操作。它又可以細(xì)分為三種,分別是 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; } ......
好了就說到這里了,有其他想知道的,可以點(diǎn)擊這個(gè)哦?!?→php視頻教程
最后給大家推薦一個(gè)PHP數(shù)組的免費(fèi)視頻教程:PHP函數(shù)之a(chǎn)rray數(shù)組函數(shù)視頻講解,快來學(xué)習(xí)吧!