2010-01-21 33 views
4

我有幾個函數,應該返回一個數組,使它與另一個數組合並。PHP:合併完整數組與空數組或首先檢查isset()?

但是,有時沒有什麼可以返回的。 這裏最好的場景是什麼?

  1. 返回一個空數組和合並與完整的一個或
  2. 返回null,存儲在一個變量回歸,檢查變量,然後根據需要合併。

我這樣問,因爲有時候最短路徑不是最快的,我真的不知道array_merge()在底層做了什麼。

+0

是否有*任何情況下的功能將不/不能返回一個數組? (並且你是否使用異常處理?) – 2010-01-21 21:52:43

+0

是的:該函數查詢某個特定id的屬性,有時不存在(就像一個人的中間名,就像一個例子)我沒有使用異常處理因爲它不會返回錯誤,只是一個警告。 – skerit 2010-01-21 22:08:11

回答

4

返回空數組。比較複雜的兩個選擇

  1. 返回一個空數組和合並與完整的一個或
  2. 返回null,存儲在一個變量回歸,檢查變量,如果需要,然後合併它。

當你編寫一個函數時,除了你以外的其他人將要使用它(這包括你從6個月前的誰不知道你在做什麼當前)。如果你返回null,那麼使用你的函數的人需要知道它可能不會返回一個數組,所以無論何時他們使用你的函數,都需要將它們的變量包裝在很多is_arrayis_set檢查中。這會導致難以維護代碼,或者在應用程序/系統在數組返回時工作時出現問題,而在返回空時不會出現問題。如果你的函數總是返回一個數組,人們可以安全地將它傳遞給期望數組的函數。 (這就是爲什麼強類型的執法恨PHP的一些主張。在Java等語言,這並不開心,因爲返回一個特定類型的事情功能)

您關注性能值得稱讚,但在一般的內置的數組操作函數已經很好地調整,並且只會在一小部分時間內遇到瓶頸。在日常代碼運行中,檢查變量值和合併到零元素數組中的性能優勢將可忽略不計。

使用更清潔的API,基準,然後優化特定情況下,你開始看到性能問題。

+1

這是一個有效的觀點,我的未來我感謝你! – skerit 2010-01-21 22:11:23

1

如果沒有什麼可返回的,只返回一個空數組。這聽起來最符合邏輯。

1

我會去...

  1. 返回一個空數組,如果沒事就去 錯

  2. 返回FALSE(或拋出異常) 如果發生錯誤

......雖然這意味着您必須做一些額外的工作,但這可能是更好的做法,並且長期來看也會帶來好處。 。 (使用返回值的array_merging可能看起來很整潔,但有點不確定,除非不可能發生任何錯誤。)