Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP JSON获取对象的名称_Php_Json_Object - Fatal编程技术网

PHP JSON获取对象的名称

PHP JSON获取对象的名称,php,json,object,Php,Json,Object,有两种可能性。如果使用的是json\u decode(),则可以传入true作为第二个参数,将数据解析为关联数组 $key = key(get_object_vars($_json)); $_json->{$key}[0]->img; 您还可以从这样的变量访问对象属性 $data = json_decode($myJson, true); print_r( $data['image_header'] ); 如果“您不知道它是什么”,您的意思是您根本不知道键,那么您可以使用我的第

有两种可能性。如果使用的是
json\u decode()
,则可以传入true作为第二个参数,将数据解析为关联数组

$key = key(get_object_vars($_json));
$_json->{$key}[0]->img;
您还可以从这样的变量访问对象属性

$data = json_decode($myJson, true);

print_r( $data['image_header'] );
如果“您不知道它是什么”,您的意思是您根本不知道键,那么您可以使用我的第一个示例,并使用
array\u values()
按索引获取值

$myProperty = 'image_header';

print_r( $data->$myProperty );

您可以通过以下方式方便地执行此操作:


如果您不知道属性的名称,可以使用PHP,或者更简单地使用

get_object_vars()可能就是您在这里寻找的对象-它“返回范围中指定对象的已定义对象可访问的非静态属性的关联数组。如果未为属性赋值,则将返回空值。”因此,您将获得关联数组中返回的属性名称及其值

$key = key(get_object_vars($_json));
$_json->{$key}[0]->img;
或者,您可以使用一些PHP的反射魔法,尽管根据您的最终目标,这可能有点过分。反射类功能非常强大,如果您对要实现的目标有更复杂的需求,那么它可能值得使用。例如:

$propertyName = key(get_object_vars($object));

这是对象的唯一属性吗?如果没有,你想要哪一个的名字?它是唯一的一个。我试图避免foreach循环;-)我添加了一个答案,但恐怕它也相当于
foreach
内部:)可以接受;-)谢谢汉克斯,去Jon's,这是最干净的解决方案:)
$propertyName = key(get_object_vars($object));
// let's say $obj is the object you provided in your question
// Instantiate the reflection object
$reflector = new ReflectionClass($obj); 

// Get properties of $obj, returned as an array of ReflectionProperty objects
$properties = $reflector->getProperties();
foreach ( $properties as $property ) {
  echo $property->getName(); // In your example, this would echo 'image_header'
}