我的代码遇到了一些问题,这是我的代码示例
$arr2=array();
$element1="2015-01-13";
if(!in_array($element1,$arr2)) {
array_push($arr2,$element1);
}
var_dump($arr2);
输出是一个空数组
array(0) {
}
如果阵列已经有一个元素(手动添加),比如2015-01-12,那么阵列推送就成功插入了2015-03-13。
当数组为空并使用in_array进行查询时会发生什么。?
以下是原始代码
$arr2 = array(); // ARRAY UNIQUE PROCESS TO PREDATES
foreach($predates as $element1)
{
foreach($predates as $element2)
{
if ($element1 != $element2 && !in_array($element1,$arr2))
{
array_push($arr2,$element1);
echo "enter";
}
}
}
非常感谢任何帮助。
答案 0 :(得分:1)
你好我很乐意帮助你,
这里发生的事情是两个因素的结合......
$element
变量error_reporting
的框架,因此会跳过通知。我强烈建议您始终查看/var/log/httpd/error_log
以调试代码并使用error_reporting = E_ALL
进行调试任务,
问候
答案 1 :(得分:0)
对不起我的所有错误,最后我找到了问题并解决了它。
问题在于:
if ($element1 != $element2 && !in_array($element1,$arr2))
如果日期相同,那么element1和element2是相同的,我使用&& operator inside.so它不会进入循环。但&&是强制性的,因为如果所有日期都不同,那么所有日期都被推入阵列中不止一个。
解决方案是:
if (count(array_unique($predates))===1) {
array_push($arr2,$predates[1]);
}
此循环将检查所有数组元素是否相同,然后插入第1个元素
并且if ($element1 != $element2 && !in_array($element1,$arr2))
仍在那里,我得到了我的输出。
请回答这个问题,这是我的恳请