[PHP] Multidimensionaal Array probleem(pje)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Ik heb een probleem met m'n array in php. Ik heb al veel gezocht met Google en hier op het forum, maar helaas kom ik er maar niet uit, vandaar dit verzoek om hulp.

Ik wil een shopping card bijhouden, met gebruik van een multidimensionaal array.
Waardes erin zetten is geen probleem, dit doe ik met :

array_push($ShoppingCard, array("ArtikelId"=>$ArtikelId, "ArtikelNaam"=>$ArtikelNaam, "Aantal"=>1, "Prijs"=>$Prijs, "Model"=>"n") );

Ook waardes eruit lezen is geen punt, ik kan eenvoudig door alle items heenlopen d.m.v. 2 genestelde foreach loop's.

Het probleem:
Ik krijg het eenvoudig weg niet voor elkaar waardes aan te passen, of een rij te verwijderen. Dit laatste zou met unset moeten gebeuren, echter ik weet met een foreach loop niet welke (rij) index ik moet verwijderen.

Om een waarde aan te passen, wil ik eigenlijk dit doen:
$ShoppingCard[x][1] = "nieuwe artikel naam";

Echter hoe kom ik nou achter de juiste index voor 'x'? Als ik er met een foreach loop doorheen loop zie ik wel de waardes, maar het zijn geen pointers naar de originele array.

Alle hulp wordt op prijs gesteld! :)

Acties:
  • 0 Henk 'm!

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08 14:36
Waarom gebruik je dan niet for in plaats van foreach?

| Toen / Nu


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat heb ik ook geprobeerd, maar dan nog lukte het me niet een element aan te passen.

Verder wordt overal ook aangeraden om juist foreach te gebruiken icm. met arrays, wat op zich mooi lijkt te werken. En dingen als 'unset' en 'push_array' maken je juist los van het gebruik van indices.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Echter hoe kom ik nou achter de juiste index voor 'x'? Als ik er met een foreach loop doorheen loop zie ik wel de waardes, maar het zijn geen pointers naar de originele array.
Wat je moet doen is gewoon de key ook meenemen in je foreach:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$array = array (
   array ( 'a', 'b', 'c' ),
   array ( 'd', 'e', 'f' )
);


foreach ( $array as $key => $value ) {
   foreach ( $value as $sub_key => $sub_value ) {
      $array [ $key ] [ $sub_key ] = strtoupper ( $sub_value );
  }
}
print_r ( $array );
SuperRembo:
Waarom gebruik je dan niet for in plaats van foreach?
Met foreach heb je altijd de zekerheid dat je een bestaand element te pakken hebt. Met for niet. Ik zou iig niet voor for gaan :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Inderdaad, waarom geen for loop?
De totale lengte van je array kun je zo uitlezen.

Trouwens:
PHP:
1
$ShoppingCard[x][1] = "nieuwe artikel naam";


zou ik in jouw situatie veranderen in:
PHP:
1
$ShoppingCard[x]['ArtikelNaam'] = "nieuwe artikel naam";


Je kunt ook (zoals hier boven staat) een key meenemen in de foreach. Waarom niet gewoon iets als dit.

PHP:
1
$ShoppingCard['ArtikelId']['ArtikelNaam'] = "nieuwe artikel naam";


Weet je meteen in welk artikel je zit.

[ Voor 34% gewijzigd door Verwijderd op 08-01-2004 10:03 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Inderdaad, waarom geen for loop?
Laat ik het zo zeggen: je maakt het je met een for-loop alleen maar lastiger. For heeft geen enkel voordeel boven foreach in het geval van arrays doorlopen.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

drm schreef op 08 januari 2004 @ 10:03:
[...]
Laat ik het zo zeggen: je maakt het je met een for-loop alleen maar lastiger. For heeft geen enkel voordeel boven foreach in het geval van arrays doorlopen.
Klopt bij nader inzien (te snel met posten van mijn kant??).

Mijn fout.....

Acties:
  • 0 Henk 'm!

Verwijderd

Note, shopping cart kan je misschien beter gewoon met een -t- schrijven. ;)

ref.

En ontopic: ik zou ook foreach() gebruiken, zie uitleg van drm.

[ Voor 18% gewijzigd door Verwijderd op 08-01-2004 10:10 ]


Acties:
  • 0 Henk 'm!

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08 14:36
Natuurlijk, zeker als je items uit een array knikkert mbv unset is een gewone for-loop niet handig. |:(

| Toen / Nu


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
[quote]drm schreef op 08 januari 2004 @ 09:59:
[...]
Wat je moet doen is gewoon de key ook meenemen in je foreach:

[...]


Aha, thanks!!
Ik het gelijk even proberen.
Was daarnet alweer aan het klooien geslagen met toch maar een for loop, maar dit is veel beter.

edit: werkt perfekt!

[ Voor 4% gewijzigd door Verwijderd op 08-01-2004 10:52 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
[quote]Verwijderd schreef op 08 januari 2004 @ 10:09:
Note, shopping cart kan je misschien beter gewoon met een -t- schrijven. ;)

Kuche :)
Ik heb het al zo vaak met een 'd' geschreven, dat het wellicht makkelijker is als de rest van de wereld het gewoon ook met een 'd' gaan schrijven :*)

Acties:
  • 0 Henk 'm!

Verwijderd

Kuche :)
Ik heb het al zo vaak met een 'd' geschreven, dat het wellicht makkelijker is als de rest van de wereld het gewoon ook met een 'd' gaan schrijven :*)
De meeste goeie editors hebben een functie genaamd Search & Replace... :p
Pagina: 1