Vraag & Antwoord

Webprogrammeren & scripting

[PHP] Gedwongen Type Conversie

9 antwoorden
  • Ik heb een eenvoudige PHP-file gemaakt voor een fotoboek voor een website, voor de zoveelste keer, maar nu wil ik het eens netjes doen. Ik wil het fotonummer meerdere keren terug laten komen op de pagina, dus het leek mij dan een goed idee om een variabele aan het begin van de PHP file deze waarde te laten aannemen. Het probleem is dat ik graag bij bijvoorbeeld foto 1 niet "1" maar "001" op het scherm wil laten zien. Bij foto 2 dus "002" en bij foto 32 "032" etc... Ga er vanuit dat er nooit meer dan 999 foto's zullen komen. Je voelt m natuurlijk al aankomen - ik heb dit volgende geprobeerd en dat werkt natuurlijk niet: [code:1:929221f617] if ( $fotonr < 100 ) { if ( $fotonr < 10 ) { $fototitelnr = "00" + $fotonr; } else { $fototitelnr = "0" + $fotonr; } } else { $fototitelnr = $fotonr; } echo $fototitelnr; [/code:1:929221f617] 001 wordt namelijk gewoon 1. Ook als ik de manieren uit mijn PHP boek gebruik (string) of settype($fotonr,"string") lukt het me niet om het gewenste resultaat te krijgen. Ik kan natuurlijk wel telkens op het moment dat ik dit op het scherm moet zetten weer een if-else statement gebruiken en dan echo "0" als dat nodig is, maar dat wordt zo lelijk in de code. Lijkt me leuk als iemand me hiermee kan helpen. Het is vast zeer gemakkelijk. Alvast bedankt.
  • Ik ben een absolute-beginner met PHP, dus ik weet niet of/hoe je de conversie kan onderdrukken. Maar als dat niet gaat is dit toch niet zo lelijk?[code:1:917b522fdf]function ToonNummer() { if ( $fotonr < 100 ) { if ( $fotonr < 10 ) { echo "00", $fotonr; } else { echo "0", $fotonr; } } else { echo $fotonr; } }[/code:1:917b522fdf]Maar het onderdrukken van die gedwongen conversie is eleganter.
  • Tot mijn verbazing werkt dit ook:[code:1:8dca6eca53]if ( $fotonr < 100 ) { if ( $fotonr < 10 ) { $fototitelnr = "00$fotonr"; } else { $fototitelnr = "0$fotonr"; } } else { $fototitelnr = $fotonr; } echo $fototitelnr;[/code:1:8dca6eca53]Goed hè :wink:
  • Perfect! Dank u wel! Die laatste oplossing is prima geschikt voor al mijn fotoboeken. Mijn oude dingen dus ook maar eens gaan aanpassen :roll: Lache zeg, dat PHP. Ik vraag me af of ASP ook zo eenvoudig met variabelen omgaat...
  • Dat zou ik niet weten. Maar ik ben blij dat het goed gelukt is.
  • ja hoor, altijd dolle pret dat automatische variable typing. 't kan ook nooit(*) verkeerd gaan als een interpreter oid ipv mij dergelijke beslissingen mag nemen. (*) scheutje sarcasme
  • Ik zal nog even uitleggen waarom de aanvankelijke oplossing niet werkte. Je voerden er namelijk een nummerieke berekening op uit. Stel dat $fotonr = 1, dan krijg je uit de berekening 00 + $fotonr = 0 + 1 = 1. Dit lijkt me ook de enige goede uitkomst van deze berekening. Wat je wilde is met strings werken, en die kennen helemaal geen '+', maar een punt ('.') om een waarde aan elkaar te plakken. Had je dus geschreven $fototitelnr = "00".$fotonr; dan had je het gewenste resultaat gekregen. Let dus voortaan goed op dit verschil tussen bewerkingen op getallen en strings en haal ze dus niet door elkaar. De wijze van PHP is dus wel degelijk logisch en eenduidig. Gewoon een kwestie van goed nadenken waarmee je nou eigenlijk bezig bent. ;) - Basje.
  • Sowieso is de oplossing van BasHamar stukken beter: [code:1:debc8a3833]echo "bla$test";[/code:1:debc8a3833]is namelijk stukken langzamer. Zie: http://www.webgoeroe.net/item/117
  • BasHamar: Dat is wederom helemaal duidelijk. Dat een punt een soort + is voor strings wist ik al, maar om dat dan bij dit 'probleem' toe te passen was blijkbaar weer te veel voor me haha. Een beetje nadenken tijdens het tikken wil nog wel eens uitmaken inderdaad... Hee jij had mij trouwens laatst ook al geholpen met een Flash- en een dHTML-ding in het webdesign forum. Bedankt hoor! Lijkt me fantastisch om zo veel kennis bij de hand te hebben. Bill Gates: Erg interessant, dat artikel op webgoeroe. Helaas was ik net overgestapt op 'print' ipv HTML-escapes (hoera weer een nieuwe term geleerd) omdat de PHP-code daarmee netter en leesbaarder werd. Ik ga hier dus dan toch maar op terug komen, zeker als ik met een site bezig ben die niet voor de lol of voor mezelf is...

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.