Re: Array
| From: | Jim Lucas | Date: | Sat, 24 Oct 2009 17:35:22 +0000 |
| Subject: | Re: Array | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-299304@lists.php.net to get a copy of this message | ||
Ron Piggott wrote:
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"; }Try this <?php ...
if ( isset($_SESSION['order']) && # Does it exist
is_array($_SESSION['order']) && # Is it an array
count($_SESSION['order']) > 0 # Does it have at least 1 element
) {
#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@gmail.com> To: ash@ashleysheridan.co.uk Cc: ron.piggott@actsministries.org, PHP General <php-general@lists.php.net> Subject: Re: [PHP] Array Date: Sat, 24 Oct 2009 11:50:14 -0300 On Sat, Oct 24, 2009 at 7:59 AM, Ashley Sheridan <ash@ashleysheridan.co.uk> wrote:-- Jim Lucas "Some men are born to greatness, some achieve greatness, and some have greatness thrust upon them." Twelfth Night, Act II, Scene V by William ShakespeareOn Sat, 2009-10-24 at 06:57 -0400, Ron Piggott wrote: The following line gives me an error message when there aren't anyvalues 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 areused on the loop. foreach($object as $prop => $value ) //php translates the foreach into something like this... foreach(get_object_vars($object) as $prop => $value )