Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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对象中的键数_Php_Arrays_Object - Fatal编程技术网

如何获取php对象中的键数

如何获取php对象中的键数,php,arrays,object,Php,Arrays,Object,我有一个带有一个key用户的arrays对象,我试图得到这个key的大小,sizeOf函数return 6。但是如果我的对象中有多个密钥用户,那么sizeOf返回密钥用户的数量 以下是我的对象的一个示例: object(Context)[347] protected 'values' => array (size=23) [...] 'user' => array (size=6) 'nom' => array (size=2)

我有一个带有一个key用户的arrays对象,我试图得到这个key的大小,sizeOf函数return 6。但是如果我的对象中有多个密钥用户,那么sizeOf返回密钥用户的数量

以下是我的对象的一个示例:

object(Context)[347]
protected 'values' => 
array (size=23)
  [...]
  'user' => 
    array (size=6)
      'nom' => 
        array (size=2)
          '@content' => string 'foo' (length=6)
          '@attributes' => 

      'email' => string 'foon@yahoo.fr' (length=24)
  [...]
获取对象中的用户密钥数的最佳方法是什么

谢谢

编辑:

有了多个用户,我得到了这个

object(Context)[347]
protected 'values' => 
array (size=23)
  [...]
  'user' => 
    array (size=2)
      0 => 
        array (size=6)
          'nom' => 
            array (size=2)
              '@content' => string 'foo' (length=6)
          'email' => string 'foo@yahoo.fr' (length=24)
      1 => 
        array (size=6)
          'nom' => 
            array (size=2)
              '@content' => string 'bar' (length=6)
          'email' => string 'bar@yahoo.fr' (length=24)
试试-

echo count(array_keys((array)$yourObject));
对于多个用户-

$count = 0;
foreach((array)$yourObject as $value) {
    $count++;
}
echo $count;

没有计算对象中元素的函数

有一个黑客: 您可以将对象强制转换为数组:

$arr = (array)$obj;
$count = count($arr);
如果使用的是STD类对象,也可以使用以下选项:

$arr = get_object_vars($some_std_class_object);
$count = count($arr);

我不明白OP的“用户密钥数”是什么意思,但是一旦你得到数组,你就可以很容易地检索这个数组中任何元素的计数。

如果我只有一个用户密钥,那么计数返回6如果你有更多的
用户
,那么在
foreach
中计数。我应该这样测试:
变量转储(数组密钥)((array)$context,'user');
我确实测试了它。它返回一个空数组。它似乎无法导航到我的
context
对象…添加一个有多个用户的示例。