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的内容($ parameters,sort_regular(。

为什么数组为空(仅在一台计算机上(?

输出为空的机器正在运行PHP版本5.0.3。

添加以下内容:

vardump($parameters);

...屈服:

array(10({[0] => string(16(" 〜Oli_Search_term" [1] => string(16(" 〜OLI_SEARCH_TERM" [2] => string(16(" 〜OLI_SEARCH_TERM=>字符串(16(" 〜Oli_Search_term" [4] => string(14(" 〜tim_time_from" [5] => string(12(" 〜tim_time_to" [6] => string(14(" 〜tim_time_from" [[7] =>字符串(12(" 〜tim_time_to" [8] =>字符串(14(" 〜tim_time_from" [9] => string(12(" 〜tim_time_to"}

找不到上述问题的解决方案后,我开始看到是否有解决方法 - 换句话说。

我发现的解决方法:

对于:

的所有实例
array_unique($parameters, SORT_REGULAR)

替换为:

array_unique($parameters)

我不确定这种修改的行为将是什么,尽管它似乎会产生我想要的结果。为了明确检查此更改的功能,我提到了手册,并找到了这一点:

"添加了可选的sort_flags默认为sort_regular。在5.2.9之前,此函数用于内部用sort_string对数组进行排序。"

因此,根本原因是在第二个服务器上运行5.0.3,不支持可选的标志参数。

最新更新