➤6.4 回傳值(return指令)
當我們在函式中,如果有使用到return指令,即代表停止函式運行,並且將參數做為方法的值(回傳值)給傳回去。而回傳值的型別資料可以是字串或整數。
範例4和5,我在方法內分別執行二維陣列,差別在於我使用迴圈撈出資料時,一個寫在方法內,一個是寫在方法外。
在下面第5個範例,當我在方法內若沒有使用return回傳,又去呼叫該方法的話,就會出現"為foreach()提供的參數無效"的錯誤訊息,原因在於我並沒有在該方法內執行迴圈(對比範例4),僅執行二維陣列,迴圈我是在方法的外面才執行。您可以試著把範例5的return拿掉試試看,便知道了!
PS.棧長在開發一些後台系統的網站,有時候資料較龐大時就會將常態性使用的功能集中寫在一頁(把常用到的幾個function塞到一頁),需要用到時就可以直接叫出來。例如.會員管理層級。
這邊若各位棧友們想更詳細研究return的更深入的話,可以到php的官網看(點我)。
#範例1. 傳入參數-乘法計算
<?php
//傳入參數-乘法計算
function calc($num){
if($num == 0){
echo "什麼都沒有";
}else {
return $num * $num * $num;
}
}
$result = calc(3); //參數為3
echo $result. "<hr>"; //直接用echo calc(3); 結果是一樣的
?>
#範例2. 傳入參數-三個數值比大小
<?php
//傳入參數-三個數值比大小
function compare($k1, $k2, $k3){
if($k1 >= $k2 && $k1 >= $k3){
//當k1大於等於k2.k3就回傳
return $k1;
} elseif($k2 >= $k1 && $k2 >=$k3) {
//當k2大於等於k1.k3就回傳
return $k2;
} else {
//若都沒達到上述兩個條件就回傳k3
return $k3;
}
}
echo compare(60, 80, 50); //傳入參數
?>
#範例3. 傳入參數-賦值運算(先增加,後乘)
<?php
//傳入參數-賦值運算(先增加,後乘)
function get_datas($q){
$datas = 5;
if ($q != 0){
$datas += $q;
// 15*15=225
return $datas * $datas;
}
else{
echo "程式有錯誤";
}
}
echo get_datas(10);
?>
#範例4. 呼叫方法內的陣列-無使用return
<?php
//呼叫方法內的陣列-無使用return
function all_data(){
$date = date("Y-m-d H:i:s"); //時間的函式("年-月-日 時-分-秒")
$charactor = array( array('name' =>'毛胖胖' ,'blood' =>'100' ,'power' =>'60'),
array('name' =>'老蔣' ,'blood' =>'88' ,'power' =>'96'));
for($i=0; $i<2; $i++){
echo "名字是 ".$charactor[$i]['name'].","
."生命值是 ".$charactor[$i]['blood'].","
."戰鬥指數是 ".$charactor[$i]['power']."<br>";
}
echo "紀錄時間: ".$date;
}
all_data();
?>
#範例5. 呼叫方法內的陣列-使用return
<?php
//呼叫方法內的陣列-使用return
function pooh(){
$charactor = array( array('name' =>'習包子' ,'skill' =>'扛二百斤麥子10里山路不換肩'),
array('name' =>'維尼熊' ,'skill' =>'震攝14億人民的恐怖角色'));
//一定要用return指令否則會出錯
return $charactor;
}
?>
<?php $winnie = pooh();?>
<table border="1">
<?php foreach ($winnie as $k => $v):?>
<tr>
<td><?php echo $v['name'];?></td>
<td><?php echo $v['skill'];?></td>
</tr>
<?php endforeach; ?>
</table>
沒有留言:
張貼留言