使用 PHP 访问具有无效或数字属性名称的对象
尝试使用 PHP 中的 json_decode() 函数解析 JSON 数据时,您可能会在访问名称为整数的属性时遇到困难,或者无法遵守有效的变量命名约定。此行为源于 PHP 在处理具有此类属性的对象时的固有限制。
限制和怪癖
解决方案
解决方案#1:手动类型转换
手动将对象转换为数组以访问无效的属性名称:
$a = array('123' => '123', '123foo' => '123foo'); $o = (object) $a; $a = (array) $o; echo $a['123']; // OK!
解决方案#2:核选项
使用递归函数将对象转换为数组:
function recursive_cast_to_array($o) { $a = (array) $o; foreach ($a as &$value) { if (is_object($value)) { $value = recursive_cast_to_array($value); } } return $a; } $arr = recursive_cast_to_array($myVar); $value = $arr['highlighting']['448364']['Data']['0'];
解决方案#3:JSON函数
利用内置 JSON 函数递归转换为数组:
$arr = json_decode(json_encode($myVar), true); $value = $arr['highlighting']['448364']['Data']['0'];
在选择最适合您要求的解决方案之前,请务必考虑每种解决方案的缺点。例如,解决方案 #2 和 #3 执行不必要的数组转换,而解决方案 #3 还要求字符串属性以 UTF-8 进行编码。
以上是如何使用'json_decode()”在 PHP 中访问具有无效或数字属性名称的对象?的详细内容。更多信息请关注PHP中文网其他相关文章!