terrid25
terrid25

Reputation: 1946

counting occurrences in an array

I am trying to count the number of occurrences in an array of cart items in Magento.

There are several items in the array, all with a price field (either $0 and $10)

What I'm looking to do, is to display the count of those items that have a price of 0

I currently have:

$session = Mage::getSingleton('checkout/session'); 
$items_array = $session->getQuote()->getAllItems();
foreach($items_array as $item) {
    if ($item->getPrice() == 0) {
        echo 'Item is free';
    }
    else {      
    }
}

This simply outputs all the free items. Ideally, I'd like to display just the count of such items.

Could I use something like array_count_values, but limit it to only count those values that are 0?

Upvotes: 0

Views: 168

Answers (2)

ncremins
ncremins

Reputation: 9200

$session = Mage::getSingleton('checkout/session'); 
$items_array = $session->getQuote()->getAllItems();

$free = 0;
$notfree = 0;
foreach($items_array as $item) {
    if ($item->getPrice() == 0) {
        echo 'Item is free';
        $free++;

    }
    else {
        $notfree++;
    }
}

echo 'total free items = ' . $free;
echo 'total nonfree items = ' . $notfree;

Upvotes: 0

ajimix
ajimix

Reputation: 992

You can do that with several ways, but having that code the most easy one will be:

$session = Mage::getSingleton('checkout/session'); 
$items_array = $session->getQuote()->getAllItems();
$freeItems = 0;
foreach($items_array as $item) {
    if ($item->getPrice() == 0) {
        $freeItems++;
    }
}
echo "There are $freeItems free items";

Upvotes: 1

Related Questions