我有一系列代码,在我的本地开发机器上起作用,但在另一台机器上不起作用(预期(。
这是我对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,不支持可选的标志参数。