2017-05-30 4 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)); 

(Iは入力を出力にデバッグおよび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)の内容をダンプすることを目的と

なぜアレイは空です(1台のマシンのみ)?

出力が空のマシンでPHPバージョン5.0.3が実行されています。

vardump($parameters); 

...収量:以下の追加

アレイ(10){[0] =>列(16) "〜oli_Search_Term" [1] =>文字列(16 "〜oli_Search_Term" [4] => "〜oli_Search_Term" [2] => string(16) "〜oli_Search_Term" [3] => string(16) "〜oli_Search_Term" [4] =>文字列(14) "〜tim_Time_From" [5] => string (12) "〜tim_Time_To" [6] => string(14) "〜tim_Time_From" [9] => > string(12) "〜tim_Time_To"}

+0

私のためにうまくいくhttps://eval.in/807346 –

+0

PHP 5.6.25を実行している私の他のPCでもうまく動作します。 – youcantryreachingme

+0

投稿で 'var_dump($ parameters)'を更新してもよろしいですか? –

答えて

0

解決策が見つからない私は上記の別の方法でコードするための回避策があるかどうかを見始めた。私は、この修正動作が一目でがどうなるかに関しては不明な点だった

array_unique($parameters) 

私が見つけた回避策:すべてのインスタンスの場合

:で

array_unique($parameters, SORT_REGULAR) 

置き換え私が望む結果を生むように見えました。

"省略可能なsort_flagsをSORT_REGULARに追加しました。5.2.9より前のバージョンでは、この関数は内部的にSORT_STRINGで配列をソートするのに使用されていました。 "

根本的な原因は、5.0.3を実行している2番目のサーバーでは、オプションのフラグ引数がサポートされていないためです。

関連する問題