2017-05-30 105 views
0

我有一行代碼在我的本地開發機器上工作,但在另一臺機器上無法工作(如預期的那樣)。php array_unique根據服務器返回空陣列

這裏是我的電話的調試array_unique:

debug("Parameter array size: ".sizeof($parameters)); 
debug("Sorted array size: ".sizeof(array_unique($parameters, SORT_REGULAR))); 
debug_r($parameters); 
debug_r(array_unique($parameters, SORT_REGULAR)); 

(我編寫的調試和debug_r函數輸出輸入,但很好地格式化。)

的結果是:

Parameter array size: 10 
Sorted array size: 0 
Array ([0] => ~oli_Search_Term [1] => ~oli_Search_Term [2] => ~oli_Search_Term [3] => ~oli_Search_Term [4] => ~tim_Time_From [5] => ~tim_Time_To [6] => ~tim_Time_From [7] => ~tim_Time_To [8] => ~tim_Time_From [9] => ~tim_Time_To) 

注 - 存在着最後的調試調用(旨在轉儲array_unique的內容($參數,SORT_REGULAR)沒有輸出

爲什麼數組爲空(且僅在一臺機器上)?

輸出爲空的機器正在運行PHP版本5.0.3。

添加以下:

vardump($parameters); 

...收率:

陣列(10){[0] =>串(16) 「〜oli_Search_Term」[1] =>串(16 )「〜oli_Search_Term」[2] => string(16)「〜oli_Search_Term」[3] => string(16)「〜oli_Search_Term」[4] => string(14)「〜tim_Time_From」[5] => string (12)「〜tim_Time_To」[6] => string(14)「〜tim_Time_From」[7] => string(12)「〜tim_Time_To」[8] => string(14)「〜tim_Time_From」[9] = > string(12)「〜tim_Time_To」}

+0

對我來說工作正常https://eval.in/807346 –

+0

我的另一臺PC也運行正常,它運行PHP 5.6.25版。 – youcantryreachingme

+0

你可以在你的文章中更新'var_dump($ parameters)'嗎? –

回答

0

找不到解決方案上面的問題,我開始看到是否有解決方法 - 以另一種方式進行編碼。

我找到的解決方法:

有關的所有實例:

array_unique($parameters, SORT_REGULAR) 

替換:

array_unique($parameters) 

我不確定什麼該修改的行爲將是雖然一目瞭然它似乎產生了我想要的結果。爲了明確檢查這個改變會做什麼,我參考了手冊,發現:

「添加了可選的sort_flags默認爲SORT_REGULAR。在5.2.9之前,此函數用於在內部對數組和SORT_STRING進行排序。 「

因此,根本原因是在第二臺運行5.0.3的服務器上,不支持可選的標誌參數。