在数组php中列出和计数元素

在数组php中列出和计数元素,php,arrays,Php,Arrays,我有下面的数组,正在尝试用php循环遍历它,生成一个“类型”列表,并计算有多少个。类型是关键,但会有独特的值,如通话、待办事项、会议、提案等。我的目标是发布以下内容: Call 2 To-do 1 Meeting 3 Proposal 4 上面的值不是从下面的数组中输出的值,但是我想让您了解我要实现的目标。请帮忙 Array ( [0] => Array ( [0] => Call [Type] => Call [1]

我有下面的数组,正在尝试用php循环遍历它,生成一个“类型”列表,并计算有多少个。类型是关键,但会有独特的值,如通话、待办事项、会议、提案等。我的目标是发布以下内容:

Call 2
To-do 1
Meeting 3
Proposal 4
上面的值不是从下面的数组中输出的值,但是我想让您了解我要实现的目标。请帮忙

Array (
    [0] => Array (
        [0] => Call
        [Type] => Call
        [1] => fxxxx@xxxxentllc.com
        [EmailAddress] => xxxxr@xxxxentllc.com
        [2] => 3xxxx00
        [Phone] => 31xxxx00
        [3] => 31xxxx871
        [MobilePhone] => 31xxxx871
        [4] => 102795
        [CustomerID] => 102795
        [5] => Nortxxxxal
        [Company] => Noxxxxal
        [6] => Frank
        [FirstName] => Frank
        [7] => Syxxxxer
        [LastName] => Sxxxxter
        [8] => 3
        [Priority] => 3
        [9] => invite to Haxxxxales for lunch
        [Details] => invite to Hafxxxxales for lunch
        [10] => 4503
        [ActivityID] => 4503
        [11] => 05/23/13
        [DueDate] => 05/23/13
    )
    [1] => Array (
        [0] => To-do
        [Type] => To-do
        [1] => fsxxxxer@summxxxxntllc.com
        [EmailAddress] => fsxxxxer@summixxxxtllc.com
        [2] => 315xxxx000
        [Phone] => 3154xxxx0
        [3] => 315xxxx1
        [MobilePhone] => 315xxxx1
        [4] => 102795
        [CustomerID] => 102795
        [5] => Norxxxxl
        [Company] => Norxxxxcal
        [6] => Frxxxxk
        [FirstName] => Fxxxxk
        [7] => Sxxxxr
        [LastName] => Syxxxxer
        [8] => 3
        [Priority] => 3
        [9] => find out who contact is for xxxxdical center
        [Details] => find out who contact is foxxxxcal center
        [10] => 4504
        [ActivityID] => 4504
        [11] => 05/23/13
        [DueDate] => 05/23/13
    )
)
这应该做到:

$type_counts = array_count_values(array_map(function($x) {return $x['Type'];}, $array));
array\u映射
将返回一个包含所有
类型
元素的数组,然后
array\u count\u值
将计算其中每个元素的数量,并将其作为关联数组返回。

这应该可以做到:

$type_counts = array_count_values(array_map(function($x) {return $x['Type'];}, $array));

array\u映射
将返回一个包含所有
类型
元素的数组,然后
array\u count\u值
将计算其中每个元素的数量,并将其作为关联数组返回。

如下所示:

foreach ($array as $key => $value) {
 if (isset($result[$key])) {
  $result[$key]++;
 } else {
 $result[$key] = 1;
 }
}
$your_array = /* Your Array */
$types_count = array();
foreach ($your_array as $type_array){
    $types_count[$type_array['Type']]++;
}

如果它是一个多维数组,只需在其中为每个数组放置另一个数组,但这会给你一个想法,大致如下:

foreach ($array as $key => $value) {
 if (isset($result[$key])) {
  $result[$key]++;
 } else {
 $result[$key] = 1;
 }
}
$types = array();
foreach($array as $item) {
    isset(${$item['Type']}) ? ${$item['Type']}++ : ${$item['Type']} = 1;
    if(!in_array($item['Type'], $types) {
        $types[] = $item['Type'];
}
foreach($types as $type) {
    echo "$type ${$type}\n";
}
$your_array = /* Your Array */
$types_count = array();
foreach ($your_array as $type_array){
    $types_count[$type_array['Type']]++;
}

如果它是一个多维数组,只需为每个数组放置另一个数组,但这应该会给你一个想法

我认为你可以在数组中循环并计算每个对应项

$types = array();
foreach($array as $item) {
    isset(${$item['Type']}) ? ${$item['Type']}++ : ${$item['Type']} = 1;
    if(!in_array($item['Type'], $types) {
        $types[] = $item['Type'];
}
foreach($types as $type) {
    echo "$type ${$type}\n";
}
$Call = 0;
$To_do = 0;
$Meeting = 0;
$Proposal = 0;
foreach($array as $data)
{
    if($data['Type'] == 'Call')
    {
        $Call++;
    } else if($data['Type'] == 'To-do')
    {
        $To_do++;
    } else if($data['Type'] == 'Meeting')
    {
        $Meeting++;
    } else if($data['Type'] == 'Proposal')
    {
        $Proposal++;
    }
}

通过这种方式,您将在每个变量
$Call$To_do$Meeting$Proposal
中存储其相对计数我认为您可以在数组中循环并计算每个事件的对应值

$Call = 0;
$To_do = 0;
$Meeting = 0;
$Proposal = 0;
foreach($array as $data)
{
    if($data['Type'] == 'Call')
    {
        $Call++;
    } else if($data['Type'] == 'To-do')
    {
        $To_do++;
    } else if($data['Type'] == 'Meeting')
    {
        $Meeting++;
    } else if($data['Type'] == 'Proposal')
    {
        $Proposal++;
    }
}
通过这种方式,您将在每个变量
$Call$To_do$Meeting$Proposal
中存储其相对计数

您可以使用(数组计数值($array)); 这将给出数组中所有键的计数

如果只需要特定的键,则使用foreach循环

Petros提到的一种方法是最好的方法。

您可以使用(array\u count\u values($array)); 这将给出数组中所有键的计数

如果只需要特定的键,则使用foreach循环


Petros提到的一种方法是最好的方法。

我会按照以下思路做一些事情:

foreach ($array as $key => $value) {
 if (isset($result[$key])) {
  $result[$key]++;
 } else {
 $result[$key] = 1;
 }
}
$your_array = /* Your Array */
$types_count = array();
foreach ($your_array as $type_array){
    $types_count[$type_array['Type']]++;
}

我会按照以下思路做一些事情:

foreach ($array as $key => $value) {
 if (isset($result[$key])) {
  $result[$key]++;
 } else {
 $result[$key] = 1;
 }
}
$your_array = /* Your Array */
$types_count = array();
foreach ($your_array as $type_array){
    $types_count[$type_array['Type']]++;
}


示例循环是什么样子的?示例循环是什么样子的?感谢您的回复,我仍然没有运气让它工作。我确信这是我错过的一件小事。此外,下面是我如何生成数组的。当我尝试将生成的数组插入到代码中时,什么也没有发生,但是使用print\u r命令输出数组。我刚刚测试了我的代码,它成功了。您也可以使用与其他答案类似的代码,在
while
循环中计算值。感谢您的回答,我仍然没有运气让它工作。我确信这是我错过的一件小事。此外,下面是我如何生成数组的。当我尝试将生成的数组插入到代码中时,什么也没有发生,但是使用print\u r命令输出数组。我刚刚测试了我的代码,它成功了。您也可以使用与其他答案类似的代码,在
while
循环中计算值。感谢您的回答,我仍然没有运气让它工作。我确信这是我错过的一件小事。此外,下面是我如何生成数组的。当我尝试将生成的数组插入到代码中时,什么也没有发生,但是使用print\u r命令输出数组。你能把数组的一部分给我检查一下吗?应该没什么大问题谢谢你的回复我还是没办法让它发挥作用。我确信这是我错过的一件小事。此外,下面是我如何生成数组的。当我尝试将生成的数组插入到代码中时,什么也没有发生,但是使用print\u r命令输出数组。你能把数组的一部分给我检查一下吗?应该没什么大问题谢谢你的回复我还是没办法让它发挥作用。我确信这是我错过的一件小事。此外,下面是我如何生成数组的。当我尝试将生成的数组插入到代码中时,什么也没有发生,但是使用print\u r命令输出数组@m1e1b1您是否尝试将
foreach($test as$data)
替换为
foreach($array as$data)
?感谢您的回复,我仍然没有成功。我确信这是我错过的一件小事。此外,下面是我如何生成数组的。当我尝试将生成的数组插入到代码中时,什么也没有发生,但是使用print\u r命令输出数组@m1e1b1您是否尝试将
foreach($test as$data)
替换为
foreach($array as$data)
?感谢您的回复,我仍然没有成功。我确信这是我错过的一件小事。此外,下面是我如何生成数组的。当我尝试将生成的数组插入到代码中时,什么也没有发生,但是使用print\u r命令输出数组。谢谢你的回复,我还是没能成功。我确信这是我错过的一件小事。此外,下面是我如何生成数组的。当我尝试将生成的数组插入到代码中时,什么也没有发生,但是使用print\u r命令输出数组。谢谢你的回复,我还是没能成功。我确信这是我错过的一件小事。此外,下面是我如何生成数组的。当我尝试将生成的数组插入到代码中时,什么也没有发生,但是使用print\u r命令输出数组。谢谢你的回复,我还是没能成功。我确信这是我错过的一件小事。此外,下面是我如何生成数组的。当我尝试将生成的数组插入到代码中时,什么也没有发生,但是使用print\u r命令输出数组。这是一个二维数组,
array\u count\u values()
本身无法工作。你需要用我的答案,是2-