Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.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 stdClass获取属性名_Php_Object - Fatal编程技术网

从PHP stdClass获取属性名

从PHP stdClass获取属性名,php,object,Php,Object,我有一个数组对象,看起来像: $inDatabase = Array ( [0] => stdClass Object ( [abc@gmail.com] => Array ( ) ) [1] => stdClass Object ( [xyz@gmail.com] => Array

我有一个数组对象,看起来像:

$inDatabase = Array
(
    [0] => stdClass Object
        (
            [abc@gmail.com] => Array
                (
                )
        )
    [1] => stdClass Object
        (
            [xyz@gmail.com] => Array
                (
                )
        )
)
如何将电子邮件地址推送到新阵列上?我尝试了以下方法:

$innerKeys =[];
$temp=[];
for($i=0;$i<2;$i++){
   $temp = array_keys($inDatabase[$i])

   //so I thought $temp[0] would have the email address but $temp is null.

   array_push($innerKeys,$temp[0]);

}
$innerKeys=[];
$temp=[];
for($i=0;$i
array\u keys()
用于数组。若要将对象属性转换为数组,请使用
get\u object\u vars()
。因此您需要

$temp = array_keys(get_object_vars($inDatabase[$i]));

array\u keys()
用于数组。若要将对象属性转换为数组,请使用
get\u object\u vars()
。您需要

$temp = array_keys(get_object_vars($inDatabase[$i]));

您可以使用
array\u reduce()
get\u object\u vars()
array\u keys()


工作示例:

您可以使用
array\u reduce()
get\u object\u vars()
array\u keys()


工作示例:

您也可以强制转换到数组并获取第一个键。我对其进行了一些修改:

foreach($inDatabase as $o) {
   $innerKeys[] = array_keys((array)$o)[0];
}
但是,由于您想要第一个,因此,
键(出乎意料地)将对对象起作用:

foreach($inDatabase as $o) {
   $innerKeys[] = key($o);
}
或者更简单:

$innerKeys = array_map('key', $inDatabase);

您也可以将其强制转换为数组并获取第一个密钥。我对其进行了一些修改:

foreach($inDatabase as $o) {
   $innerKeys[] = array_keys((array)$o)[0];
}
但是,由于您想要第一个,因此,
键(出乎意料地)将对对象起作用:

foreach($inDatabase as $o) {
   $innerKeys[] = key($o);
}
或者更简单:

$innerKeys = array_map('key', $inDatabase);

为什么您首先使用电子邮件地址作为属性名称?这是否回答了您的问题?更简单,没有循环。为什么您首先使用电子邮件地址作为属性名称?这是否回答了您的问题?更简单,没有循环。这不产生输出。print\r($temp)空白我打错了数组名,你复制了我的错误吗?顺便说一句,你为什么不使用
foreach
?这不会产生任何输出。print\r($temp)是空白我打错了数组名,你复制了我的错误吗?顺便说一句,你为什么不使用
foreach