2011-03-17 46 views
3

这里很简单,但伤害了头部。当数值确实存在时,数组中的php返回false

echo in_array('275', $searchMe); 

返回false。但是,如果我打印数组,然后使用我的Web浏览器手动搜索,我可以看到数组中存在该值。

[0] => ExtrasInfoType Object 
       (
        [Criteria] => 
        [Code] => 275 
        [Type] => 15 
        [Name] => Pen 
       ) 

额外信息。该阵列已被从一个对象转换为阵列使用

$searchMe = (array) $object; 

是否因为值没有被引用?我已经尝试使用与in_array功能如下:$ searchMe的

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_dump

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

转储阵列转换后,它是否保留对象的属性关联键,还是它转换属性到数字索引?如果它工作的话。 – Orbling 2011-03-17 01:11:43

+0

请注意,错误表明'$ searchMe'仍然是一个对象。 – Orbling 2011-03-17 01:13:26

+0

好的。所以in_array不会在对象上工作? – goingsideways 2011-03-17 01:14:25

回答

0

in_array不能ExtrasInfoType Object里面看到。基本上它的比较ExtrasInfoType Object275,在这种情况下返回false

0

你有一个目标在那里,使用...

// 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) 

CodePad

当我投((array))到一个数组,我......

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