2017-05-30 37 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的服务器上,不支持可选的标志参数。