KT客棧

Web程式交流 & 聊幹畫 / 心情手札

【PHP】6自訂函式-6.4 回傳值(return指令)

*PHP  6自訂函式-6.4 回傳值(return指令)


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>





沒有留言:

張貼留言

@templatesyard