Jump to content

[SOLVED] array structure question


aebstract

Recommended Posts

Just want some input on your thoughts for an array structure. Right now, for a shopping cart, each item is added as it's own id to a session and then split up in to an array. So 4,4,4,5,3. Then after splitting that up a      foreach ($contents as $id=>$qty) {

will tell us that we have qty 3 of item 4, 1 of 5 and 1 of 3. Would it be better to somehow make this a deeper array, something like:

 

array('item1' => array('1', '1', '1'),

        'item2' => array('1', '1'));

 

Then I can display item 1 and know I have 3 of it and item2 I have 2 of it? If so how do I go about storing something like this in a variable and how do I go about grabbing those results?

Link to comment
https://forums.phpfreaks.com/topic/143526-solved-array-structure-question/
Share on other sites

Well if I have 3 of the same item and want to update it to 10, or 1... I'm having trouble figuring out how to easily update my quantity because of the way it is listed.

 

edit: I see what you mean but I am pretty stupid with arrays, gonna fiddle around and see if I can figure it out.

Well if I have 3 of the same item and want to update it to 10, or 1... I'm having trouble figuring out how to easily update my quantity because of the way it is listed.

 

If the current quantity is 3 and you want to change it to 10, then simply update the value to 10.

 

Current cart:

$cart = array(
    //ID => Qty
    '3' => 1,
    '4' => 3,
    '5' => 1
)

 

Then if you need to change the quantity for product with the ID of 3 you would simply state

$cart[3] = 10;

My current array when printed looks like this:

 

array(7) {

  [0]=>

  string(1) "8"

  [1]=>

  string(1) "8"

  [2]=>

  string(6) "11;4.2"

  [3]=>

  string(1) "7"

  [4]=>

  string(6) "11;4.3"

  [5]=>

  string(6) "11;4.2"

  [6]=>

  string(6) "11;4.2"

}

 

Needs to be formatted something like

 

array (

'11;4.2' => 3,

'11;4.2' => 3,

'11;4.2' => 3,

'8' => 2,

'7' => 1

)

 

Though I'm not sure how to set it up to work like that.

Well, you have to create it like that. I'm assuming you have code already developed that creates the array when someone adds an item to the cart and it always adds a new element to the array. You will need to modify that code so it increments any existing elements.

 

Simple example for a function to add a single qty to an item in the cart

$cart = array();

function addItem($itemID)
{
    global $cart;

    if(!isset($cart[$itemID]))
    {
        $cart[$itemID] = 1;
        return;
    }
    $cart[$itemID]++;
}

 

Again, that is a "simple" example. A real solution would probably allow for the value to be set to a fixed qty or to increment/decrement the quantity as needed. It all depends on your particular needs.

Okay, I'm gonna work with that in the morning. Currently all I am doing to make the cart is add the id of the item on to the end of a string. So I have $_SESSION['cart'] = "4,4,4,4"; and just if I wanted to add item 3 it would just get added to the end: 4,4,4,4,3. This leaves me pretty much option-less to do anything else ;(

Right. So instead use this structure:

 

$_SESSION['cart'][ItemID] = Quantity;

 

$_SESSION['cart'][4] = 4;
$_SESSION['cart'][3] = 1;

 

So something like,

$_SESSION['cart'][$specialid] = 1;

right? With that, how would I work with the id and qty for each item? Like how can I set em as a variable or something?

 

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.