2017-05-09 149 views
-2

我有一個允許根據語法「key.key2.key3」檢索數組的類。檢查數組的子對象是數組還是數組

現在,沒問題。當其中一個鍵是對象時會發生問題。 因爲我必須檢查密鑰是一個數組還是一個對象

當我嘗試確定鍵[key2] ==數組類型或key-> key2 ==對象的類型時,我的腳本錯誤。這兩個條件之一可能是錯誤的。 (例如,腳本測試key [key2] ==數組,key2是一個對象)。

有沒有一種方法來驗證key2是一個數組或對象而不用做key [key2]或key-> key2?

謝謝。

+2

份額代碼 –

+2

['is_array()'](http://php.net/manual/en/function.is-array.php)['is_object ()'](http://php.net/manual/en/function.is-object.php) –

+0

我已經使用is_array()和is_object(),但不像trincot的例子。 trincot的例子工作,我沒有這樣使用這兩個函數。 –

回答

0

您需要在父進行測試,之前訪問的關鍵。

下面是一個例子:

function findValue($a, $s) { 
    $keys = explode(".", $s); 
    foreach ($keys as $key) { 
     if (is_object($a)) { 
      $a = $a->$key; 
     } else if (is_array($a)) { 
      $a = $a[$key]; 
     } else { // unexpected 
      return null; 
     } 
    } 
    return $a; 
} 

// Sample data: mix of object and array: 
$arr = [ 
    "key1" => (object) [ 
     "key2" => [ 
      "key3" => 42 
     ] 
    ] 
]; 

echo findValue($arr, "key1.key2.key3"); // 42 
0

is_array()怎麼樣?

文檔here

相關問題