Vraag & Antwoord

Webprogrammeren & scripting

[php] Arrays vraagje

9 antwoorden
  • Ik heb een klein vraagje over arrays. Voorheen heb ik het nog nooit echt vaak / complex toe moeten voegen, vandaar heb ik er nog niet veel ervaring mee. Stel ik creëer deze array: $array_a = array( "Appel" => 1, "Banaan" => 2, "Koekje" => 1, "Brood" => 3 ); Dit moeten de producten van een winkel voorstellen en het nummer erachter hoevaak één element voorkomt. Nu wil ik op een of andere manier eerst het aantal producten laten echooën en vervolgens de naam van het product, dus bijvoorbeeld: U heeft: 1x Appel 2x Banaan Maar klopt het dat ik met de bovenstaande array dus slechts het aantal kan laten weergeven ($array_a[1]) ? En daarnaast, vroeg ik me af hoe ik een array kan gebruiken om meerdere waarden aan een element toe te kennen (bijvoorbeeld, hoe kan ik het aantal en het artikelnummer aan het item "appel" koppelen en vervolgens ook apart laten echooën?) Alvast bedankt!
  • [code:1:60450994c1]foreach($array_a as $key=>$value) echo $value . "x " . $key; [/code:1:60450994c1] om meerdere waazrden toe te kennen zou je gebruik kunnen maken van een geneste array: [code:1:60450994c1] $array_a = array( "Appel" => array("aantal" => 1, "artno" => 64), "Banaan" =>array("aantal" => 2, "artno" => 65), "Koekje" => array("aantal" => 1, "artno" => 66), "Brood" => array("aantal" => 3, "artno" => 67), ); [/code:1:60450994c1]
  • Bedankt, Marientje! Dan voorlopig nog een laatst vraagje: Als ik een item uit een array wil verwijderen of toevoegen, hoe kan ik dit voor elkaar krijgen? En hoe zou ik die foreach loop moeten gebruiken in geval van een geneste array?
  • [quote:dcee8fe5ea="carlobernardini"]Als ik een item uit een array wil verwijderen of toevoegen, hoe kan ik dit voor elkaar krijgen?[/quote:dcee8fe5ea] Kijk eens bij de [url=http://nl3.php.net/array]array functies[/url] in de manual. Bijvoorbeeld array_push, array_pop. [quote:dcee8fe5ea="carlobernardini"] En hoe zou ik die foreach loop moeten gebruiken in geval van een geneste array?[/quote:dcee8fe5ea] Dat wordt dan bijvoorbeeld zoiets: [code:1:dcee8fe5ea] foreach ($array_a as $key => $value) { echo $key, $value['aantal'], $value['artno']; } [/code:1:dcee8fe5ea]
  • Dank u, dank u Ik denk dat ik er voorlopig wel uit zal komen :wink:
  • Hmm, daar is dan mijn volgende vraagje. Na veel zoeken ben ik er nog steeds niet achter hoe je array_push() kan gebruiken voor een nested array.. Dit is het uiteindelijke model van mijn array: artikelnummer => array(aantal=>x,omschrijving=>x); Het idee is dus dat als er verschillende rijen met hetzelfde artikelnummer ontstaan, deze automatisch bijeengevoegd worden, zodat het aantal ook opgeteld wordt. nu moet ik dus op een of andere manier een rij toevoegen aan de array, en dat gaat dus niet op deze manier: $array[artikelnummer] = array(aantal=>x,omschrijving=>x); ..aangezien een product dan in zijn geheel overgeschreven wordt.. De enige optie lijkt me dus array_push() te gebruiken, maar hoe??
  • ik heb geen standaardfunctie hiervoor gevonden dus ik denk dat je zelf iets moet schrijven in de trant van: [code:1:b3a1542772] function addArtikel($array, $artno, $aantal, $omsch) { if ($key = array_search($artno, $array)) $array[$key] = array($array[$key]['aantal'] + $aantal, $array[$key]['omschr']); else $array[$artno] = array('aantal'=>$aantal, 'omschr'=>$omschr); } [/code:1:b3a1542772] ik denk dat ik hier een klasse voor zou aanmaken zodat je iets kan doen van shoppingCart->addArticle('artno', 5, 'miusmat') maar dat is mijn smaak natuurlijk. Je kan dan ook de omschrijving weglaten want die ligt voor een artikelnummer toch wel vast. Die hoef je niet telkens in je functies mee te geven als je t goed aanpakt.
  • Helaas, het werkt niet... Ik heb er het volgende van gemaakt: [code:1:9efdc9d70d] session_start(); if (($_SERVER['REQUEST_METHOD'] == 'GET') && ($_GET['action'] == 'cart') && ($_GET['method'] == 'add')) { $itemid = $_GET['item']; $quantity = $_GET['qt']; $desc = $_GET['name']; if ($key = array_search($itemid, $_SESSION['cart'])) { $_SESSION['cart'][$key] = array($_SESSION['cart'][$key]['quantity'] + $quantity, $_SESSION['cart'][$key]['desc']); } else { $_SESSION[$itemid] = array('quantity'=>$quantity, 'desc'=>$desc); } foreach ($_SESSION['cart'] as $id => $fetch) { echo $fetch['quantity'] . "x " . $fetch['desc'] . '<br />'; } } [/code:1:9efdc9d70d] En de functie wordt aangeroepen d.m.v. ajax, door op een volgende button te drukken: [code:1:9efdc9d70d] <input type="button" onclick="addRemCartItem(111112,'Appels','add',1)" value="Voeg een appel toe" /> // AJAX: <script language="javascript" type="text/javascript"> function addRemCartItem(itemid,name,method,num){ document.getElementById('cart').innerHTML += '<b>Een moment geduld a.u.b.</b>'; var ajaxRequest; try{ ajaxRequest = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers try{ ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ return false; } } } ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){ document.getElementById('cart').innerHTML = ajaxRequest.responseText; } } ajaxRequest.open("GET", "merch.php?action=cart&item="+itemid+"&method="+method+"&name="+name+"&qt="+num, true); ajaxRequest.send(null); } </script> [/code:1:9efdc9d70d] Ik kan niet echt vinden wat ik fout doe.... Jij wel?
  • met Ajax ben ik niet (goed) bekend dus daar kan ik je niets over zeggen. Plaats in het PHP gedeelte eens een print_r($_SESSION['cart']) ofzo, dan kan je zien of dat wel goed gaat.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.