Re: Array

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@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 )



--
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 Shakespeare

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux