如何计算php关联数组中的项数

时间:2012-05-15 15:38:42

标签: php multidimensional-array

我有一个数组如下。

Array
(
[0] => Array
    (
        [item] => Banana Cream Cheesecake
        [item_id] => 3
        [product] => Desserts
    )

[1] => Array
    (
        [item] => Banana Cream Cheesecake
        [item_id] => 3
        [product] => Desserts
    )

[2] => Array
    (
        [item] => Banana Cream Cheesecake
        [item_id] => 3
        [product] => Desserts
    )

[3] => Array
    (
        [item] => Banana Cream Cheesecake
        [item_id] => 3
        [product] => Desserts
    )

[4] => Array
    (
        [item] => Milk
        [item_id] => 2
        [product] => Soda
    )

[5] => Array
    (
        [item] => Banana Cream Cheesecake
        [item_id] => 3
        [product] => Desserts
    )
)

我想打印: -

Banana Cream Cheesecake = 5

怎么做?

7 个答案:

答案 0 :(得分:7)

$count = 0;
foreach ($array as $key=>$value) {
    if ($value ['item'] == 'Banana Cream Cheesecake') {
        $count++;
    }
}
echo $count;

答案 1 :(得分:5)

array_count_values(array_map(function($foo){return $foo['item'];}, $arr));

答案 2 :(得分:3)

给出这样的数组:

$arr = array(array('item' => 'Banana Cream Cheesecake',
                   'item_id' => 3,
                   'product' => 'Desserts'),
             array('item' => 'Banana Cream Cheesecake',
                   'item_id' => 3,
                   'product' => 'Desserts'),
             array('item' => 'Banana Cream Cheesecake',
                   'item_id' => 3,
                   'product' => 'Desserts'),
             array('item' => 'Banana Cream Cheesecake',
                   'item_id' => 3,
                   'product' => 'Desserts'),
             array('item' => 'Milk',
                   'item_id' => 2,
                   'product' => 'Soda'),
             array('item' => 'Banana Cream Cheesecake',
                   'item_id' => 3,
                   'product' => 'Desserts'));

您可以使用array_count_values并按名称获取计数

$counted = array_count_values(array_map(function($value){return $value['item'];}, $arr));
echo $counted['Banana Cream Cheesecake'];

或者修改函数以使用项目的id:

$counted = array_count_values(array_map(function($value){return $value['item_id'];}, $arr));
// The item_id
echo $counted['3'];

答案 3 :(得分:1)

扩展@ steve的answer

$counted = array_count_values(array_map(function($foo){return $foo['item'];}, $arr));

这为您提供了一个数组,其中包含['item']键的每个值的总计。

例如,这是您的示例将返回的数组:

$counted = Array
(
    ['Banana Cream Cheesecake'] => 5
    ['Milk'] => 1
)

然后,打印它只是回应变量的问题:

echo 'Banana Cream Cheesecake = ' . $counted['Banana Cream Cheesecake'];
//prints "Banana Cream Cheesecake = 5"

这里的优点是你不需要为你需要计算的每个值运行for循环 - 而是你有一个数组,其中包含该特定键的所有值的总数。

答案 4 :(得分:0)

print_r数组并计算你的芝士蛋糕的出现次数。

不,严重的是,如果没有更多信息,这是一个解决方案;)

$iCount = substr_count(print_r($array, true), "cheese cake");

答案 5 :(得分:0)

在处理数字而不仅仅是字符串时遇到问题,因为substr_count也使用了键,因此我只使用普通计数而不是substr_count并且工作正常。

$icount=count(print_r($_SESSION['id_bra'], true), $bran);

答案 6 :(得分:0)

今天更容易做到这一点。

这是您的数组:

$products = array (
  0 => array (
    'item' => 'Banana Cream Cheesecake',
    'item_id' => 3,
    'product' => 'Desserts'
  ),
  1 => array (
    'item' => 'Banana Cream Cheesecake',
    'item_id' => 3,
    'product' => 'Desserts'
  ),
  2 => array (
    'item' => 'Banana Cream Cheesecake',
    'item_id' => 3,
    'product' => 'Desserts'
  ),
  3 => array (
    'item' => 'Banana Cream Cheesecake',
    'item_id' => 3,
    'product' => 'Desserts'
  ),
  4 => array (
    'item' => 'Milk',
    'item_id' => 2,
    'product' => 'Soda'
  )
);

计数项目:

$counts = array_count_values(array_column($products, 'item'));

var_dump($counts);

Demo Here

干杯! :)