From: Ron Piggott on 24 Oct 2009 06:57 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 ) {
From: Ashley Sheridan on 24 Oct 2009 06:59 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
From: Martin Scotta on 24 Oct 2009 10:50 On Sat, Oct 24, 2009 at 7:59 AM, Ashley Sheridan <ash(a)ashleysheridan.co.uk>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
From: Ron Piggott on 24 Oct 2009 11:42 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(a)gmail.com> To: ash(a)ashleysheridan.co.uk Cc: ron.piggott(a)actsministries.org, PHP General <php-general(a)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(a)ashleysheridan.co.uk> 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
From: Ron Piggott on 24 Oct 2009 12:15 AHH. The count() command does the trick. Ron -----Original Message----- From: Ron Piggott <ron.piggott(a)actsministries.org> Reply-to: ron.piggott(a)actsministries.org To: Martin Scotta <martinscotta(a)gmail.com>, phpster(a)gmail.com Cc: ash(a)ashleysheridan.co.uk, PHP General <php-general(a)lists.php.net> Subject: Re: [PHP] 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(a)gmail.com> To: ash(a)ashleysheridan.co.uk Cc: ron.piggott(a)actsministries.org, PHP General <php-general(a)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(a)ashleysheridan.co.uk> 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
|
Next
|
Last
Pages: 1 2 Prev: all local sites stopped working ... Next: cannot compile PHP 5.2.11 on Mac OS X 10.6.1 |