PHP:!in_array不使用空数组

时间:2015-02-01 17:42:55

标签: php arrays codeigniter

我的代码遇到了一些问题,这是我的代码示例

$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";
                            }
                    }
            }

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

你好我很乐意帮助你,

这里发生的事情是两个因素的结合......

  1. 您错过了$element变量
  2. 上的$
  3. 您没有激活所有错误报告,因此通知未显示在屏幕上,或者您使用的是修改error_reporting的框架,因此会跳过通知。
  4. 我强烈建议您始终查看/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))仍在那里,我得到了我的输出。

请回答这个问题,这是我的恳请