php特定数组列中有多少唯一值

php特定数组列中有多少唯一值,php,arrays,json,unique,google-visualization,Php,Arrays,Json,Unique,Google Visualization,我从我的查询中得到了想要的结果,现在我很难计算 了解如何将数据处理成可用的内容 最终目标是一个json输出,供google图表使用,我可以在 任何单个组件都不会出现问题 我需要输出像这样(我不知道后面会有多少组件) 月/年…可能是0或10或20…: 这是我查询后得到的数组(暂时无法执行此操作(),因为我需要 所需输出(如上)的第一行的cmpnt_名称,这就是我首先构建阵列的原因): 我不能循环遍历数组并获取每个cmpnt_名称并将其附加到 所需输出的第一行。。。我只想要单子 此外,组件在给定的月

我从我的查询中得到了想要的结果,现在我很难计算 了解如何将数据处理成可用的内容

最终目标是一个json输出,供google图表使用,我可以在 任何单个组件都不会出现问题

我需要输出像这样(我不知道后面会有多少组件) 月/年…可能是0或10或20…:

这是我查询后得到的数组(暂时无法执行此操作(),因为我需要 所需输出(如上)的第一行的cmpnt_名称,这就是我首先构建阵列的原因):

我不能循环遍历数组并获取每个cmpnt_名称并将其附加到 所需输出的第一行。。。我只想要单子

此外,组件在给定的月份内可能没有任何视图(甚至可能没有视图) 存在于该月),因此我可能有从2月开始的组件和其他组件 直到稍后才添加,但已包含在计数中。。。i、 e.增加消声器 三月

那么,我如何为第一行查找唯一的组件名称呢

我在想:

function findUniques($cmpnt)
{
  $names = array();
  foreach($cmpnt as $item)
  {
    $key = $item['cmpnt_name'];
    if(array_key_exists($key, $names))
    {
      $names[$key]++;
    }
    else
      $names[$key] = 1;
  }
  return($names);
}
是否有一个php函数用于此

有更好的方法吗

是否有一个php函数用于此

否。是最近的,但不处理维度数组

有更好的方法吗

不幸的是,PHP(目前)没有数组函数将键提取到数组中,这样您就可以使用
array\u unique()

因此,除了使用数组函数进行一些微优化或重构外,您所拥有的通常是您必须要做的

但是,您确实有输入错误:

$names[$key] = ++$count;
是否有一个php函数用于此

否。是最近的,但不处理维度数组

有更好的方法吗

不幸的是,PHP(目前)没有数组函数将键提取到数组中,这样您就可以使用
array\u unique()

因此,除了使用数组函数进行一些微优化或重构外,您所拥有的通常是您必须要做的

但是,您确实有输入错误:

$names[$key] = ++$count;

我想知道您是否有幸使用
array\u map
来提取具有特定键的所有元素。范例

Function compKey($v) {
    Return $v['cmpnt_name'];
}
CKeys = array_map("compKey", $cmpnt);
UniqueComponents = array_unique(CKeys);

不确定语法是否和在iPhone上输入的完全一样,也不知道是否更有效。但是值得一试吗?

我想知道您是否有幸使用
array\u map
来提取具有特定键的所有元素。范例

Function compKey($v) {
    Return $v['cmpnt_name'];
}
CKeys = array_map("compKey", $cmpnt);
UniqueComponents = array_unique(CKeys);

不确定语法是否和在iPhone上输入的完全一样,也不知道是否更有效。但是值得一试吗?

您应该能够执行array\u列,然后执行array unique,因此请尝试以下操作:

array_unique(array_column($cmpnt, 'cmpnt_name'));

您应该能够执行“数组\列”,然后执行“数组唯一”,因此请尝试以下操作:

array_unique(array_column($cmpnt, 'cmpnt_name'));

array_unique()函数能否帮助您获得组件的唯一名称?array_unique()。。。尝试过了,由于月/年/计数值的原因,太多节点是唯一的。array_unique()函数能否帮助您获得组件的唯一名称?array_unique()。。。尝试过之后,由于月/年/计数值的原因,有太多节点是唯一的请查看我的答案,以了解“Pull”函数中最接近的内容。我还没有弄清楚如何将elect的名称作为第二个参数传递,所以在本例中对其进行了硬编码——但它是有效的。请参阅我的答案,了解我能为“pulk”函数找到的最接近的东西。还没有弄明白如何把被选的名字作为第二个参数,所以硬编码它这个例子-但它工作。+,但是,我认为这相当于使用数组函数重构的原始代码。简单的答案是PHP目前无法完成单个函数所要求的功能。@jasonmccreary-我并不反对。不过,我认为这是对数组映射的一种很酷的使用。我怀疑没有明显的性能差异。对我来说,这是同一个问题。。。用相同的键提取所有元素,得到所有元素。但是,我认为这等同于使用数组函数重构的原始代码。简单的答案是PHP目前无法完成单个函数所要求的功能。@jasonmccreary-我并不反对。不过,我认为这是对数组映射的一种很酷的使用。我怀疑没有明显的性能差异。对我来说,这是同一个问题。。。用同一个键提取所有元素,得到所有元素。无论谁被否决,你能解释一下原因吗?我发现这对我来说很有效,并且比下面的另一个答案要简单一些。注意,
array\u column
在PHP5.5中是新出现的。谁投了反对票,你能解释一下原因吗?我发现这对我来说很好,并且没有下面的另一个答案复杂。注意,
array\u column
在PHP5.5中是新的。