6

我有一个数组如下。

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

怎么做?

4

7 回答 7

9
$count = 0;
foreach ($array as $key=>$value) {
    if ($value ['item'] == 'Banana Cream Cheesecake') {
        $count++;
    }
}
echo $count;
于 2012-05-15T15:41:13.857 回答
5
array_count_values(array_map(function($foo){return $foo['item'];}, $arr));
于 2012-05-15T15:49:04.553 回答
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'];
于 2012-05-15T15:59:41.273 回答
1

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

不,说真的,没有更多信息,这是一个解决方案;)

$iCount = substr_count(print_r($array, true), "cheese cake");
于 2012-05-15T15:42:08.660 回答
1

扩展@steve 的回答

$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 循环 - 相反,您有一个数组,其中包含该特定键的所有值的总计。

于 2015-09-11T13:18:13.957 回答
0

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

$icount=count(print_r($_SESSION['id_bra'], true), $bran);
于 2013-02-20T18:53:00.367 回答
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);

在这里演示

干杯! :)

于 2019-01-10T16:04:01.110 回答