Hallo,

Ik ben tegen een probleem aangelopen. Ik heb namelijk een multidimensional array om al mijn producten in te zetten. Het kan er als volgt uit zien:


$_SESSION['products'] = array(
                           array('id' => '1', 'quantity' => 1)
                           array('id' => '2', 'quantity' => 6)
                           array('id' => '3', 'quantity' => 4)
                        );


Maar ik wil nu kijken of er bijvoorbeeld in deze array het product 3 zit. En zo ja dan laat ik een melding ziet dat het product er al in zit. Zo nee dan doe ik een array_push() :


array_push($_SESSION['products'], array('id' => '3', 'quantity' => $quantity));





Kan iemand mij helpen?


groetjes,

Sem
Ik lees toevallig dat het het niet werkt met multidimensionale arrays:

https://stackoverflow.com/questions/4128323/in-array-and-multidimensional-array

Toevallig vond ik dit wel een simpele loop om de value te checken:

function whatever($array, $key, $val) {
    foreach ($array as $item)
        if (isset($item[$key]) && $item[$key] == $val)
            return true;
    return false;
}



[size=xsmall]Toevoeging op 04/06/2020 13:33:20:[/size]

Je zou dan eventueeel een else statement kunnen maken in de function die dan de waarde die je wilt er in gooit. Met array_push
Of nog een veel simpelere manier: sla het product id redundant op.

Nu is $_SESSION['products'] gewoon een emmer die je vult, maar een product id is uniek, dus die kun je prima als key gebruiken.

Wat let je om zoiets te doen?

<?php
$_SESSION['products'][5] = array(
    'id' => 5,
    'quantity' => 3,
);
?>

Je kunt dan rechtstreeks met array_key_exists() of isset() checken of een product (id) reeds aanwezig is in $_SESSION['products'].

Oftewel: maak slimmer gebruik van je array-keys.

Reageren