我已經嘗試過了array_key_exists()。但是當它應該回傳預期結果時,流明顯示錯誤訊息,我需要使用另一個 php 函式而不是array_key_exists()像這個問題標題中提到的那樣isset()或property_exists()。
$jsonData = "mydata.json";
$content = file_get_contents($jsonData);
$unsortedData = json_decode($content, true);
//convert array to object
$object = (object) $unsortedData;
$key = $request->input('key');
$keyData = "false";
if(array_key_exists($key, $object))
{
$keyData = "true";
}
// usort($unsortedData, function($a, $b){
// return $a['no'] > $b['no'];
// });
return $keyData;
// var_dump($unsortedData);
那么,應該使用哪一種以及如何使用呢?感謝您的幫助
uj5u.com熱心網友回復:
array_key_exists() 可以處理物件,但該行為在 php 7.4.0 中已棄用并在 php 8 中洗掉:
筆記:
出于向后兼容性的原因,如果 key 是在作為陣列給出的物件中定義的屬性,則 array_key_exists() 也將回傳 true。此行為自 PHP 7.4.0 起已棄用,并自 PHP 8.0.0 起移除。
要檢查物件中是否存在 屬性, 應使用property_exists()。
因此,您可以將代碼更改為:
// Take note that the order of parameters is inverted from the array_key_exists() function
// | |
// V V
if(property_exists($object, $key))
{
$keyData = "true";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/329700.html
下一篇:受保護欄位中的C#內部型別
