Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组中的php在值不存在时返回false_Php_Arrays - Fatal编程技术网

数组中的php在值不存在时返回false

数组中的php在值不存在时返回false,php,arrays,Php,Arrays,这里有一个很简单,但伤了人的头 echo in_array('275', $searchMe); 返回值为false。但如果我打印出数组,然后使用web浏览器手动搜索,我就能看到数组中存在该值 [0] => ExtrasInfoType Object ( [Criteria] => [Code] => 275 [Type]

这里有一个很简单,但伤了人的头

echo in_array('275', $searchMe);
返回值为false。但如果我打印出数组,然后使用web浏览器手动搜索,我就能看到数组中存在该值

[0] => ExtrasInfoType Object
                (
                    [Criteria] => 
                    [Code] => 275
                    [Type] => 15
                    [Name] => Pen
                )
额外信息。已使用将数组从对象转换为数组

$searchMe = (array) $object;
是否因为没有引用这些值?我已尝试将以下功能与
in_array
功能结合使用:

echo in_array('275', $searchMe); // returns false
echo in_array(275, $searchMe); // returns error (Notice: Object of class Extras could not be converted to int in)
var_转储$searchMe

array
  'Extras' => 
    object(Extras)[6]
      public 'Extra' => 
        array
          0 => 
            object(ExtrasInfoType)[7]
              ...
          1 => 
            object(ExtrasInfoType)[17]
              ...
          2 => 
            object(ExtrasInfoType)[27]
              ...

在数组中
无法看到
ExtrasInfoType对象的内部
。基本上,它将
ExtrasInfoType对象
275
进行比较,在本例中返回
false

如果有对象,请使用

// Setup similar object
$searchMe = new stdClass;
$searchMe->Criteria = '';
$searchMe->Code = 275;
$searchMe->Type = 15;
$searchMe->Name = 'Pen';

var_dump(in_array('275', (array) $searchMe)); // bool(true)

当我将(
(array)
)转换为数组时,我得到了

array(4) {
  ["Criteria"]=>
  string(0) ""
  ["Code"]=>
  int(275)
  ["Type"]=>
  int(15)
  ["Name"]=>
}

我认为有一种情况会有所帮助


如果包含该值的数组索引为0,则in_数组的返回值将为0。如果在我们的逻辑中,0被认为是错误的,那么就会出现问题。在代码中避免这种模式。

转换后转储该数组,它是保留对象属性的关联键,还是将属性转换为数字索引?请注意,该错误指示
$searchMe
仍然是一个对象。确定。所以in_array不会对对象起作用?@claw:如果你不能正确地转换对象,那么对象可能不是数组。@claw
in_array()
,有趣的是,它对数组起作用:)。但是,您可以将对象强制转换为数组,以将其属性/值转换为关联数组。我同意您的看法,我刚刚遇到了索引0和in_数组返回false的情况。在这种情况下,使用严格模式也可能对我有所帮助。但我使用的数组搜索与!==False这应该是一种编程反模式,否则语言应该知道如何处理它。:)