PHP & Golang 函數多值返回比較

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

    之前(由於太雞凍而寫的心得記錄,《看了Go Lang 的一點介紹, 我心動了》),當時被Go語言的多值返回的便利性感動到流涕,因為這個特性確實給予了我們太多的方便和實惠,所以說Go語言是如此的緊貼工程實踐呢。而PHP雖然在語言上並沒有直接支援多隻返回,但是卻提供了一個語言結構這樣的奇葩存在來賦值。

在php中,類似的文法需要 array配合 list 這個語言結構來實現。  點擊這裡查看官方手冊對list 的用法說明。

官方是這樣描述list的用途的:

array list ( mixed $varname [, mixed $... ] )

<像 array() 一樣,這不是真正的函數,而是語言結構。list() 用一步操作給一組變數進行賦值。

廢話不多說,舉個栗子:

<?php//e.g (1)list($succ, $code, $data) = array(true, 0, array(1,2,3));//$succ : true//$code : 0//$data : array(1,2,3)

上面的例子,很簡單,就是把array的每一個元素一次性賦值給list裡面的變數。

   回到這篇文章的開頭,和Go語言相比,PHP如何?多值返回呢?相信如果看到這裡的你,也應該清楚了。:-D,如果非要我來個栗子,好吧,上代碼:

<?php//假如我們查資料庫,擷取使用者資訊function get_user_info($uid){   //some code get userinfo from db.           try{      $userinfo = Db::get_one(array('uid'=>$uid));      $result = array(true, 0, $userinfo);   } catch (\Exception $e){      $result = array(false, $e->getCode(), $e->getMessage());   }   return $result;              }list($succ, $code , $data) = get_user_info(20);if ($succ){  //some thing  var_dump($data);}else{  Logger::writeErrorLog($data,$code);  echo $data;//error message}


   各種語言都有自己的特點,雖說沒有go語言那麼簡潔,但終究是也是一個比較方便的設施。隨著PHP不斷的演變,我們開發也隨之改變,其實這句話是錯誤的!因為PHP始終遵循著最佳實務的路子在往前走,所以才有了語言特性的變化,有精力的可以去看看PHP特性RFC,這裡都是根據實際應用情境來提交並投票決定是否開發的。希望她越來越好,為什麼不呢?




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.