引數用乙個陣列還是分開幾個

2021-07-28 02:34:05 字數 1592 閱讀 4002

就算定義成乙個$params引數,函式增加了新key的處理,那呼叫的地方傳的引數沒新key也是要編寫新key的賦值**

不定義成乙個$params的話除了調整函式的處理,還要調整傳參的**,也是要改兩處

該不該將引數定義成陣列,要看這些引數是不是同乙個型別的集合,是的話就從概念上將它定義為乙個整體,就用陣列,不能參與到這個整體中的就單獨定義

做了一兩年的程式設計師通常都會遇到這樣情況:原來有個獲取某時間段新使用者列表的函式function getnewuserlist($starttime, $endtime),後來因為需求說要支援獲取的人數,導致要加多個引數,變成了function getnewuserlist($starttime, $endtime, $nums),不止定義函式的地方改了,而且到處的呼叫**都要找出來修改,導致有改漏的情況,呼叫出錯了

有一部分人開始學聰明了,他直接這樣設計函式:

function

getnewuserlist

($where)

{}

這個$where是乙個含有starttimeendtimenums下標的陣列,可是我個人覺得這還是有問題的

至少,外界沒有乙個流行開來的開源程式和框架用乙個$params的設計,我也從沒聽說哪個大牛認可這個設計,除非在特定應用場合,比如webservice

放心講這麼多話不是說你犯了什麼十惡不赦的大罪,只是在分析後果,其實我曾經也苦惱這個引數設計問題,差點陷入了這個深淵,但喜歡探索的我在各大論壇不斷發帖求知+請大神吃飯交流,最終解除了這個疑惑

這是我在網上找到的答案,也是一些有10多年經驗的老程式設計師指點的經驗

最近我們專案有個計算兩個使用者間距離的方法設計,負責這個事的是一位1年經驗的程式設計師,他的設計是這樣的:

/**

* 獲取兩個使用者的距離

* @param float $user1x 使用者1的經度

* @param float $user1y 使用者1的緯度

* @param float $user2x 使用者2的經度

* @param float $user2y 使用者2的緯度

* @return int 距離(公尺)

*/function

getdistance

($user1x, $user1y, $user2x, $user2y)

{}

以上4個引數分別代表使用者1的經緯度(x和y)和使用者2的經緯度

我指導他調整這樣的:

/**

* 獲取兩個座標之間的距離

* @param array $position1 第乙個座標

* 必須包含`x`和`y`

* @param array $position2 第二個座標

* 必須包含`x`和`y`

* @return int 距離(公尺)

*/function

getdistance

($position1, $position2)

{}

乙個數 幾個數的和

斐波那契資料眾所周知如下 現在給出乙個整數n,請找出n是否可以表示為幾個斐波那契數的總和,這樣總和不包含任何兩個連續的斐波那契數。輸入 多個測試用例,第一行是乙個整數t t 10000 表示測試用例的數量。每個測試用例都是乙個整數n 1 n 109 的行。產量 每箱一行。如果答案不存在,則輸出 1 ...

將乙個陣列追加到別乙個陣列

問題 將乙個陣列追加到別乙個陣列 方案 1 使用array merge 在使用這個合併陣列時如果使用數字鍵,那麼索引會重新編號.如果使用字串鍵,則會導致第二個陣列中的鍵 覆蓋第乙個陣列中的同名鍵 此時第乙個陣列中的值也就消失了 如果是兩種鍵則會表現出上述兩種特徵.r array 1 2 dd 3 4...

php 清空乙個陣列 php如何刪除乙個陣列

php如何刪除乙個陣列2020 07 10 01 16 35 php刪除乙個陣列的方法 1 使用unset函式刪除乙個陣列元素,且保持原有索引不變 2 使用 array splice 函式刪除乙個陣列元素,不保持索引 3 使用 array diff 函式,按值刪除多個元素,保持索引。php刪除陣列 ...