Php - in_array()和! in_array()检查0值

时间:2015-04-03 06:56:45

标签: php arrays

if(( (in_array(0,$status_arr)) || (in_array(0,$genstatus_arr)) ) && 
    ((!in_array(0,$escalation_arr)) || (!in_array(0,$genescalation_arr))) ){

     echo 'Something';

}else if(( (in_array(1,$status_arr)) || (in_array(1,$genstatus_arr)) )){

    echo 'Something Else';

}

我在这里比较0in_arraynon-zero !in_array。结果根据if-else条件而有所不同,但不会输出预期结果。

为了避免这种情况,我尝试使用第三个参数true,将比较置于严格模式,这不仅会比较值,还会比较类型:

如何检查某个数组中是否存在01而另一个数组中是否存在?

数组值如下所示:

var_dump($status_arr);
   array (size=6)
  0 => string '0' (length=1)
  1 => string '0' (length=1)
  2 => string '0' (length=1)
  3 => string '0' (length=1)
  4 => string '0' (length=1)

var_dump($genstatus_arr);
   array (size=6)
  0 => string '1' (length=1)
  1 => string '1' (length=1)
  2 => string '1' (length=1)
  3 => string '1' (length=1)
  4 => string '1' (length=1)

对于以下情况,它不起作用

if( (in_array(0,$status_arr)) && (!in_array(0,$genstatus_arr)) )

它也不是IN ARRAY

的副本

2 个答案:

答案 0 :(得分:0)

  

var_dump(in_array(0,$ status_arr,true));

应该返回true,没有任何异常。如果您看到false,则很可能是因为您的0之一是字符串0而不是数字0

如果是这种情况,请删除strict参数

$array=array(0,2,3);
var_dump(in_array(0,$array,true));

返回

 bool(true)

并且

$array=array('0','2','3');
var_dump(in_array(0,$array,true));

返回

bool(false)

你提到了

  

对于以下情况,它不起作用

print_r($status_arr);
Array([0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0)

print_r($genstatus_arr);
Array([0] => 1 [1] => 1 [2] => 1 [3] => 1 [4] => 1 [5] => 1)

if( (in_array(0,$status_arr)) && (!in_array(0,$genstatus_arr)) )

这是一个不正确的观察,因为条件完全正常。

<强> Example

答案 1 :(得分:0)

在您的情况下,您正在尝试使用字符串

var_dump($status_arr);
   array (size=6)
  0 => string '0' (length=1)
  1 => string '0' (length=1)
  2 => string '0' (length=1)
  3 => string '0' (length=1)
  4 => string '0' (length=1)

var_dump($genstatus_arr);
   array (size=6)
  0 => string '1' (length=1)
  1 => string '1' (length=1)
  2 => string '1' (length=1)
  3 => string '1' (length=1)
  4 => string '1' (length=1)

试试这个例子:

<?php

$status_arr = array();
$status_arr = array_pad($status_arr, 6, 0);

$genstatus_arr = array();
$genstatus_arr = array_pad($genstatus_arr, 6, 1);

var_dump($status_arr);
var_dump($genstatus_arr);

if( (in_array(0,$status_arr)) && (!in_array(0,$genstatus_arr)) )  {

     echo 'Works as espected';

}