我有一個允許根據語法「key.key2.key3」檢索數組的類。檢查數組的子對象是數組還是數組
現在,沒問題。當其中一個鍵是對象時會發生問題。 因爲我必須檢查密鑰是一個數組還是一個對象
當我嘗試確定鍵[key2] ==數組類型或key-> key2 ==對象的類型時,我的腳本錯誤。這兩個條件之一可能是錯誤的。 (例如,腳本測試key [key2] ==數組,key2是一個對象)。
有沒有一種方法來驗證key2是一個數組或對象而不用做key [key2]或key-> key2?
謝謝。
我有一個允許根據語法「key.key2.key3」檢索數組的類。檢查數組的子對象是數組還是數組
現在,沒問題。當其中一個鍵是對象時會發生問題。 因爲我必須檢查密鑰是一個數組還是一個對象
當我嘗試確定鍵[key2] ==數組類型或key-> key2 ==對象的類型時,我的腳本錯誤。這兩個條件之一可能是錯誤的。 (例如,腳本測試key [key2] ==數組,key2是一個對象)。
有沒有一種方法來驗證key2是一個數組或對象而不用做key [key2]或key-> key2?
謝謝。
您需要在父進行測試,之前訪問的關鍵。
下面是一個例子:
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
is_array()
怎麼樣?
文檔here
份額代碼 –
['is_array()'](http://php.net/manual/en/function.is-array.php)['is_object ()'](http://php.net/manual/en/function.is-object.php) –
我已經使用is_array()和is_object(),但不像trincot的例子。 trincot的例子工作,我沒有這樣使用這兩個函數。 –