From: Ron Piggott on
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
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
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
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

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