如何计算 PHP 关联数组中的项目数


how to count the number of items in a php associative 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

怎么办?

$count = 0;
foreach ($array as $key=>$value) {
    if ($value ['item'] == 'Banana Cream Cheesecake') {
        $count++;
    }
}
echo $count;
array_count_values(array_map(function($foo){return $foo['item'];}, $arr));

给定这样的数组:

$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'];

print_r数组并计算奶酪蛋糕的出现次数。

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

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

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

今天做起来更简单。

这是您的阵列:

$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);

在这里演示

干杯!:)

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

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

https://www.php.net/manual/en/function.count.php(菲律宾比索 4, 菲律宾比索 5, 菲律宾比索 7, 菲律宾比索 8)

count — 对数组或可数对象中的所有元素进行计数

var_dump(count($array));