AHH. The count() command does the trick. Ron -----Original Message----- From: Ron Piggott <ron.piggott@xxxxxxxxxxxxxxxxxx> Reply-to: ron.piggott@xxxxxxxxxxxxxxxxxx To: Martin Scotta <martinscotta@xxxxxxxxx>, phpster@xxxxxxxxx Cc: ash@xxxxxxxxxxxxxxxxxxxx, PHP General <php-general@xxxxxxxxxxxxx> Subject: Re: Array Date: Sat, 24 Oct 2009 11:43:12 -0400 The code I have so far for orders is below. When a product hasn't been added it does what I want it to --- in giving the message "Your shopping cart is empty". When a product is added, but then the user changes their mind I use the following lines of code to remove the selection: UNSET($_SESSION['order'][$reference]['quantity']); UNSET($_SESSION['order'][$reference]); It still leaves the variable $_SESSION['order'] as an array, even if there are no selections in it. The PHP command is_array is useless of weed out when there are no products. What I would like to have happen is if the shopping cart is empty then the message "Your shopping cart is empty" be displayed 100% of the time. How do I achieve this? What changes to my code below need to happen? <?php if ( isset($_SESSION['order']) ) { #customer has begun creating order foreach ($_SESSION['order'] AS $key => $value ) { echo "Product: " . $key . " Quantity: " . $_SESSION['order'][$key]['quantity'] . "<br>\r\n"; } } else { #no products selected echo "<ul class=\"lists\">\r\n"; echo "<li>Your shopping cart is empty</li>\r\n"; echo "</ul>\r\n"; } -----Original Message----- From: Martin Scotta <martinscotta@xxxxxxxxx> To: ash@xxxxxxxxxxxxxxxxxxxx Cc: ron.piggott@xxxxxxxxxxxxxxxxxx, PHP General <php-general@xxxxxxxxxxxxx> Subject: Re: Array Date: Sat, 24 Oct 2009 11:50:14 -0300 On Sat, Oct 24, 2009 at 7:59 AM, Ashley Sheridan <ash@xxxxxxxxxxxxxxxxxxxx> wrote: On Sat, 2009-10-24 at 06:57 -0400, Ron Piggott wrote: > The following line gives me an error message when there aren't any > values in the array --- how do I accommodate this? > > Warning: Invalid argument supplied for foreach() > > foreach ($_SESSION['order'] AS $key => $value ) { > > Do an isset() on $_SESSION['order'] first to determine if the variable even exists, then do is_array() to determine if it's an array or not before trying to iterate it. My guess is that $_SESSION['order'] isn't an array all the time. Thanks, Ash http://www.ashleysheridan.co.uk foreach works with array and instances. Unless the class implements Transversable, it's public properties are used on the loop. foreach($object as $prop => $value ) //php translates the foreach into something like this... foreach(get_object_vars($object) as $prop => $value ) -- Martin Scotta -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php