[Opgelost] Array. Snap het nog niet helemaal.
Loop echter tegen een probleem aan waar het boek niet helemaal duidelijk is en mij het niet geheel duidelijk wordt.
in het boek wordt een voorbeeld gegeven van een hele catalogus die is opgebouwd in array's zonder een daadwerkelijke database. Dus alles is door de schrijven eigenhandig toegevoegd met een include.
Snap dat ook allemaal nog en snap de constructie daarvan ook. Snap alleen het volgende stukje niet,
in de include staat het volgende:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
//Array met producten (EAN => naam):
$producten = array(
"9789045630816" => "Studio Webdesign",
"9789045632063" => "Plantenencyclopedie 2004",
"9789045632902" => "PC Drukkerij 3 Suite",
"9789045634814" => "Creatief Fotolab",
"9789045634838" => "MovieJack DVD Pro"
);
// Array met prijzen (EAN => prijs in euro):
$prijzen = array(
"9789045630816" => 39.95,
"9789045632063" => 24.95,
"9789045632902" => 29.95,
"9789045634814" => 29.95,
"9789045634838" => 49.95
);
?>
//Array met producten (EAN => naam):
$producten = array(
"9789045630816" => "Studio Webdesign",
"9789045632063" => "Plantenencyclopedie 2004",
"9789045632902" => "PC Drukkerij 3 Suite",
"9789045634814" => "Creatief Fotolab",
"9789045634838" => "MovieJack DVD Pro"
);
// Array met prijzen (EAN => prijs in euro):
$prijzen = array(
"9789045630816" => 39.95,
"9789045632063" => 24.95,
"9789045632902" => 29.95,
"9789045634814" => 29.95,
"9789045634838" => 49.95
);
?>
Wat ik er van begrijp is dat de nummers de ean zijn. (toch?!) maar hoe leest het script het dan hier uit dat die ($)ean worden opgeroepen. Want echt benoemt worden ze toch niet?
Dit staat dan op de frontend pagina:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?
foreach ($producten as $ean => $naam) {
echo '<tr>'; // Eén rij per product
echo '<td bgcolor="#F5F5F5" style="border-bottom: solid 1px #EAE9E1">';
echo $naam; // Naam uit de array $producten
echo '</td>';
echo '<td style="border-bottom: solid 1px #EAE9E1"> € </td>';
echo '<td align="right" style="border-bottom: solid 1px #EAE9E1">';
echo str_replace(".", ",", $prijzen[$ean]); // Prijs uit de array $prijzen
echo '</td>';
echo "</tr>\n"; // Einde van de rij en een regeleinde
?>
foreach ($producten as $ean => $naam) {
echo '<tr>'; // Eén rij per product
echo '<td bgcolor="#F5F5F5" style="border-bottom: solid 1px #EAE9E1">';
echo $naam; // Naam uit de array $producten
echo '</td>';
echo '<td style="border-bottom: solid 1px #EAE9E1"> € </td>';
echo '<td align="right" style="border-bottom: solid 1px #EAE9E1">';
echo str_replace(".", ",", $prijzen[$ean]); // Prijs uit de array $prijzen
echo '</td>';
echo "</tr>\n"; // Einde van de rij en een regeleinde
?>
FF voor de duidelijkheid het werkt prima. Maar ik snap niet waar $ean vandaan kom. Kan deze ook pizza, hond, kat of wat dan ook noemen. zonder dat het iets gebeurt. Kan hem alleen niet weg halen want dan komt er waar nu $prijzen staan array te staan.
Nu de daadwerkelijke vraag ;)
Weet iemand een "beter/duidelijkere" tutorial die wat dieper hier op ingaat?
Of is er iets wat ik over het hoofd zie en misschien iemand zeg zo en zo zit dat en dat ik het begrijp?
p.s weet niet hoe ik scripjes hier zo kan maken dat ze gekleurd zijn enzo :)
thx bij voorbaat voor de help
Gewijzigd op 01/01/1970 01:00:00 door Ron
ron schreef op 14.12.2009 16:35:
p.s weet niet hoe ik scripjes hier zo kan maken dat ze gekleurd zijn enzo
http://www.phphulp.nl/faq/#4
In je tweede code maak je in je foreach-loop die $ean aan. Op PHP.net staan ook voorbeelden van een foreach-loop, vaak met $k => $v of $key => $value.
$bla = array('a','b','c');
Dan ziet dit er zo uit:
De getallen zijn gewoon de getallen die gekoppeld zijn aan de waardes. Voor de pijl heb je dus een getal, en na de pijl een letter.
Het getal, voor de pijl, heet de key. De letter, na de pijl, heet de value
Je kan door in de defenitie van een array() ook met pijlen te werken zelf de keys instellen:
$bla = array('a' => 'b', 'c' => 'd');
Daar staat dit:
snap je? (lol ik krijg wss toch geen antwoord).
op http://www.php.net/foreach kan je de precieze defenitie van foreach() lezen, maar die gebruik je om dan door een array heen te lopen:
how to use: foreach($je_array as $value) { }
dan zeg je dat ie door $je_array heen moet lopen, en de huidige waarde steeds in $value moet zetten. Als je die $value echo'd binnen de accolade's, krijg je dus bij het laatste voorbeeld een b en een d op het scherm.
Je kan foreach echter ook je key laten defineren, weer met die pijl
foreach($je_array as $key => $value) { }
Dan staat in $key de "key" van een bepaalde "value". (haha leuke zin).
Hoe nou die variabelen voor en na die pijl heten ($key en $value, of $john en $henk) maakt niet uit.
google: online cursus php
Komt allemaal wat duidelijker over. begin lampje te dagen.
Maar een array hoeft niet altijd een key te hebben toch?
teminste zoiets kan ook toch?
Code (php)
1
2
3
2
3
<?
$maanden_array = array("januari", "februari", "maart", "april","mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
?>
$maanden_array = array("januari", "februari", "maart", "april","mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
?>
of wordt nu automatisch de
Code (php)
de key?
Gewijzigd op 01/01/1970 01:00:00 door ron
niek schreef op 14.12.2009 17:27:
Php maakt zelf een integer key aan, beginnend bij 0. zie ook php.net
Ik stel voor dat je in dit geval $maanden[$maand-1]; doet.
dus jan is in dit geval 0 en die zou dus 1 moeten zijn met het script hierboven :D
Lampje brand eindelijk :P
Dank jullie allemaal 1000 maal:D
Ik wil dus dat deze code in de toekomst ligt (weet het de date('y')+1 is niet echt mooi. maar geen zin om dat uit te zoeken op het moment.
Probleem komt met dat ik de tijd op 1 maand naar voren wil zetten in de echo. Maar hij herkent natuurlijk 12 +1 =13 niet want die bestaat niet. Begint als je bijvoorbeeld
gebruikt dat ie dan als hij in dit geval bij 12 is gekomen weer terug bij 1 begint? of probeer ik het nu weer veel te moeilijk :-(
snappen en toepassen zijn toch nog best 2 grote verschillen :)
dit is de code tot nu toe. Hij echo't nu : tot 1 13 2010 wat dus 1 1 2010 of zelfs eigenlijk 1 jan 2010 moet zijn
Code (php)
het is met gelukt met
Gelieve Niet Bumpen::
Gewijzigd op 01/01/1970 01:00:00 door ron
Dit regeltje toevoegen of zo kan het ook:
Dit is een verkorte notatie van:
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE