[Opgelost] Array. Snap het nog niet helemaal.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ron

ron

14/12/2009 16:35:00
Quote Anchor link
Ik zit nu het boek website met php 5 door te nemen om php niet alleen aan te kunnen passen maar ook te kunnen schrijven.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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
    );
?>

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)
PHP script in nieuw venster Selecteer het PHP script
1
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">&nbsp;&euro;&nbsp;</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
 
PHP hulp

PHP hulp

16/05/2024 20:52:13
 
- SanThe -

- SanThe -

14/12/2009 16:43:00
Quote Anchor link
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
 
Elwin - Fratsloos

Elwin - Fratsloos

14/12/2009 17:02:00
Quote Anchor link
In je eerste code gebruik je een string als key in de array (zeg maar het unieke adres in de array). In dit geval is dat een EAN-code, maar dit kan ook 'gewone' tekst zijn.

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.
 
Niek s

niek s

14/12/2009 17:27:00
Quote Anchor link
stel je hebt
$bla = array('a','b','c');

Dan ziet dit er zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
Array (
    [0] => a
    [1] => b
    [2] => c
)


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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
Array (
    [a] => b
    [c] => d
)


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.
 
Steen

steen

14/12/2009 18:08:00
Quote Anchor link
Ahh het boek van ward van der put:)

google: online cursus php
 
Ron

ron

15/12/2009 10:23:00
Quote Anchor link
Bedank voor de responce elwin en niek,

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$maanden_array
= array("januari", "februari", "maart", "april","mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
?>

of wordt nu automatisch de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<? $maand = date('n');  
     $maand_naam = $maanden_array[$maand];
     echo" ".$maand_naam." ".$jaar." ";
?>

de key?
Gewijzigd op 01/01/1970 01:00:00 door ron
 
Leen M

Leen M

15/12/2009 10:31:00
Quote Anchor link
Dan heb je hetzelfde geval als
niek schreef op 14.12.2009 17:27:
stel je hebt
$bla = array('a','b','c');

Dan ziet dit er zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
Array (
    [0] => a
    [1] => b
    [2] => c
)



Php maakt zelf een integer key aan, beginnend bij 0. zie ook php.net
 
Hipska BE

Hipska BE

15/12/2009 10:32:00
Quote Anchor link
De key begint te tellen vanaf 0 dus maand 0 zul je niet hebben.

Ik stel voor dat je in dit geval $maanden[$maand-1]; doet.
 
Ron

ron

15/12/2009 10:40:00
Quote Anchor link
kijk nu snap ik het :D

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
 
Ron

ron

15/12/2009 10:51:00
Quote Anchor link
alleen... nu komt het volgende probleem:(
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? $maand_naam = $maanden_array[$maand+1]; ?>

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
        $jaar
= date('Y')+1;
        $maand = date('n');
        $maanden_array = array(1=> "januari", "februari", "maart", "april","mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
        $maand_naam = $maanden_array[$maand];
        echo" ".$maand_naam." ".$jaar." ";
?>

het is met gelukt met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? $maand = date('n',+1); ?>


Gelieve Niet Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.

SanThe.
Gewijzigd op 01/01/1970 01:00:00 door ron
 
Hipska BE

Hipska BE

16/12/2009 13:20:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? if($maand == 13) $maand = 1; ?>

Dit regeltje toevoegen of zo kan het ook:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? if($maand > 12) $maand -= 12; ?>

Dit is een verkorte notatie van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
if($maand > 12){
   $maand = $maand - 12;
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.