2011-03-17 45 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"]=> 
} 
相關問題