FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Removing specific array items
Show: Today's Messages :: Polls :: Message Navigator
Switch to threaded view of this topic Create a new topic Submit Reply
Removing specific array items [message #177969] Thu, 03 May 2012 13:25 Go to next message
Scott Johnson is currently offline  Scott Johnson
Messages: 196
Registered: January 2012
Karma: 0
Senior Member
In a simple quote cart I track items in a session.

$_SESSION['quote'][##] = {data}

Which increments the ## for each added item.

At the time when the client wants to remove an item from the cart I just
clear the {data} from $_SESSION['quote'][item_id] = '';

The issue i run into is when I want to display the cart, i just cant
step thru the array without seeing if a particular item is '', which
works but would like to find a more 'elegant' way.

With all that said, is there a way to remove the item from the array
rather then clear the items data.

I can only think to
1. 'somehow' move or rotate the item to the end of the array and POP it off
2. or even go as far as step thru the array and create a new one with
only populated data items.

I have looked thru the 50+ different array functions and can't seem to
find the right tool. Maybe a combination I am not seeing.

Thanks
Scotty
Re: Removing specific array items [message #177970 is a reply to message #177969] Thu, 03 May 2012 14:55 Go to previous messageGo to next message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma: 0
Senior Member
On 5/3/2012 9:25 AM, Scott Johnson wrote:
> In a simple quote cart I track items in a session.
>
> $_SESSION['quote'][##] = {data}
>
> Which increments the ## for each added item.
>
> At the time when the client wants to remove an item from the cart I just
> clear the {data} from $_SESSION['quote'][item_id] = '';
>
> The issue i run into is when I want to display the cart, i just cant
> step thru the array without seeing if a particular item is '', which
> works but would like to find a more 'elegant' way.
>
> With all that said, is there a way to remove the item from the array
> rather then clear the items data.
>
> I can only think to
> 1. 'somehow' move or rotate the item to the end of the array and POP it off
> 2. or even go as far as step thru the array and create a new one with
> only populated data items.
>
> I have looked thru the 50+ different array functions and can't seem to
> find the right tool. Maybe a combination I am not seeing.
>
> Thanks
> Scotty

unset().

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
Re: Removing specific array items [message #177971 is a reply to message #177969] Thu, 03 May 2012 15:20 Go to previous messageGo to next message
M. Strobel is currently offline  M. Strobel
Messages: 386
Registered: December 2011
Karma: 0
Senior Member
Am 03.05.2012 15:25, schrieb Scott Johnson:
> In a simple quote cart I track items in a session.
>
> $_SESSION['quote'][##] = {data}
>
> Which increments the ## for each added item.
>
> At the time when the client wants to remove an item from the cart I just clear the
> {data} from $_SESSION['quote'][item_id] = '';
>
> The issue i run into is when I want to display the cart, i just cant step thru the
> array without seeing if a particular item is '', which works but would like to find a
> more 'elegant' way.
>
> With all that said, is there a way to remove the item from the array rather then
> clear the items data.

unset($_SESSION['quote'][item_id]);

/Str.
Re: Removing specific array items [message #177972 is a reply to message #177969] Thu, 03 May 2012 16:05 Go to previous message
Thomas 'PointedEars'  is currently offline  Thomas 'PointedEars'
Messages: 701
Registered: October 2010
Karma: 0
Senior Member
Scott Johnson wrote:

> In a simple quote cart I track items in a session.
>
> $_SESSION['quote'][##] = {data}
>
> Which increments the ## for each added item.

ISTM you are looking for

$_SESSION['quote'][] = $data;

instead, which automatically increments the index of the item in
$_SESSION['quote']. On the other hand, if the real code was

$_SESSION['quote'][$index] = $items[$index];

you might want to consider simplifying the loop to one statement:

$_SESSION['quote'] = $items;

> At the time when the client wants to remove an item from the cart I just
> clear the {data} from $_SESSION['quote'][item_id] = '';

Consider

unset($_SESSION['quote'][$item_id]);

instead.

> The issue i run into is when I want to display the cart, i just cant
> step thru the array without seeing if a particular item is '',

(Please try to work on your spelling.)

> which works but would like to find a more 'elegant' way.

After the above, you might want to use

if (!isset($_SESSION['quote'][$item_id])
{
/* Item with $item_id exists */
}

This approach is more precise in combination with is_null().

> With all that said, is there a way to remove the item from the array
> rather then clear the items data.
^
That is _not_ a question.

> I have looked thru the 50+ different array functions and can't seem to
> find the right tool. Maybe a combination I am not seeing.

There is:

<http://php.net/unset>
<http://php.net/isset>
<http://php.net/is_null>


PointedEars
--
realism: HTML 4.01 Strict
evangelism: XHTML 1.0 Strict
madness: XHTML 1.1 as application/xhtml+xml
-- Bjoern Hoehrmann
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Session variables..
Next Topic: Re: reading a newline from a properties file
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Fri Nov 22 21:10:51 GMT 2024

Total time taken to generate the page: 0.03328 seconds