php 函數如何返回多個值

來源:互聯網
上載者:User
但是我的遭遇如下:
下面這個函數告訴我們兩個使用者是否可以交流。

function a_can_talk_to_b($a, $b) {    return (...) ? true : false;}

現在,事情變了,除了告知能不能交流外,還要告知為什麼,即希望函數調用在返回false能告訴調用方為什麼是false。
我用了下面這種方式:(給函數傳一個傳引用參數why,然後返回出來)

function a_can_talk_to_b($a, $b, &$why) {    if (...) {        return true;    } else {        $why = '...';        return false;    }}

還有另一種就是返回一個array:(但是這樣傳回值就不是簡單的布爾值了,會改變函數調用的方式)

function a_can_talk_to_b($a, $b) {    if (...) {        $why = '...';        return array('status' => true, 'why' => $why);    } else {        $why = '...';        return array('status' => false, 'why' => $why);    }}

除了這兩種還有別的方式嗎?

回複內容:

但是我的遭遇如下:
下面這個函數告訴我們兩個使用者是否可以交流。

function a_can_talk_to_b($a, $b) {    return (...) ? true : false;}

現在,事情變了,除了告知能不能交流外,還要告知為什麼,即希望函數調用在返回false能告訴調用方為什麼是false。
我用了下面這種方式:(給函數傳一個傳引用參數why,然後返回出來)

function a_can_talk_to_b($a, $b, &$why) {    if (...) {        return true;    } else {        $why = '...';        return false;    }}

還有另一種就是返回一個array:(但是這樣傳回值就不是簡單的布爾值了,會改變函數調用的方式)

function a_can_talk_to_b($a, $b) {    if (...) {        $why = '...';        return array('status' => true, 'why' => $why);    } else {        $why = '...';        return array('status' => false, 'why' => $why);    }}

除了這兩種還有別的方式嗎?

這樣做可以啊,從語言的角度來說沒有任何問題
樓主是不是想問這種做法好不好?
我的建議是,最好別這樣,因為每次都還要多傳一個跟邏輯似乎毫無關係的參數,使用的人會覺得很奇怪。

如果可以的話,拋出exception吧,你可以通過catch Exception來擷取意外資訊

這種設計需求本身就是不合理的。
一個函數,就幹一件事情。
如果要幹多個事情,分開函數來做。
非要放在一個函數裡面,一開始就返回數組吧。沒別的招。

return {'canTalk'=>true,'why'=>'balabala...'}

挺好挺正確,如果你別的地方也回用到why,那也有必要單獨提出來形成一個封裝。

如果你不在乎返回true or false的便捷
可以返回CODE
再根據CODE=>MESSAGE表來找出why

返回數組、JSON對象都可以解決你的問題

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.