Php 获取数组中项目的数量

Php 获取数组中项目的数量,php,Php,我有一个数组具有以下格式: array( info( Date-today => '09/04/2013' ) clients( id => 1001, name => Fred ) more_info( weather-today => "cloudy" ) ) 但有时,我会收到更多客户的数据: array( info( Date-today => '08/04/2013' ) clie

我有一个数组具有以下格式:

array(
  info(
    Date-today => '09/04/2013'
  )
  clients(
    id => 1001,
    name => Fred
  )
  more_info(
    weather-today => "cloudy"
  )
)
但有时,我会收到更多客户的数据:

array(
  info(
    Date-today => '08/04/2013'
  )
  clients(
    0(
      id => 1001,
      name => Fred
    ),
    1(
      id => 1045,
      name => Fritz
    )
  )
  more_info(
    weather-today => "Sunny"
  )
)
我想计算返回的cients数量,因为如果只有一个或多个cients,我需要以不同的方式访问客户端数据。 我尝试了几个“count()”选项,例如:

count(array['client'])
当然,如果只有1个客户机,它不会返回1,而是返回2(因为数组中有2项客户机数据)


有什么提示吗?

如果您有一个类似数组的结构(如示例中的客户机集合),则应该始终为条目编制索引,即使只有一个条目

这样你就不会遇到你描述的问题

编辑:
没有看到你的评论。 您可以先检查$array['clients']是否有任何内容(通过count())。
->如果没有,则cnt=0。
然后检查是否定义了$array['clients']['0'] ->如果未定义,则cnt=1。

->如果是,cnt=count()

$size = count($array['clients'];
if (count(array_filter(array_keys($array['clients']), 'is_int')) == $size) {
    return $size;
} else {
    return 1;
}
或者,使用一个数值索引的存在作为条件:

if (isset($array['clients'][0])) {
    return count($array['clients']);
} else {
    return 1;
}

count(数组['clients'])
?但即使如此,它也应该返回客户机条目的数量,而不是
客户机
数组中的子条目的数量,除非您使用递归函数调用
count()
flag@MarkBaker不,因为这里的对象也是数组,所以
count()
将计算“属性”的数量或客户端的数量。请使用sizeof(array['subscribers']),订阅服务器和客户端是一样的吗?array['subscribers']['clients']?你对数据结构有控制权吗?@MarkBaker我确信它以前是一个对象,但现在已经变成了它的属性数组。我假设
客户端
订阅服务器
是一样的:)我看不见你的。count($array[“clients”])就足够了。在我看来,这种“肮脏的把戏”代码更少,效果更好,而且在代码的第一位有一个解析错误code@Dale我想在这种情况下它会通过:)抱歉,刚刚醒来:)顺便说一句,该对象看起来像以前的XML。如果没有客户端,第二位代码返回1,即如果$array['clients']定义为空,对吗?