|
| liste af bogstaver Fra : Leonard |
Dato : 03-10-07 16:23 |
|
Jeg skal bruge en liste af bogstaverne fra A-Z og tænkte, at det var
nemt lavet med en for, men:
for ($i='A'; $i<='Z'; $i++) {
giver mig fra A til YZ og det var ikke meningen.
for ($i='A'; $i<'Z'; $i++) {
giver mig som forventet A-Y
så jeg tænkte, at jeg kunne snyde med
for ($i='A'; $i<'['; $i++) {
da [ kommer efter Z, men det giver bare endnu flere, jeg stoppede
scriptet, da det var nået et godt stykke hen i 4-bogstaver.
Jeg kunne selvfølgelig bare bruge den første og så tilføje Z ligesom jeg
bliver nødt til at tilføje ÆØÅ, men det må da kunne gøres mere elegant?
--
Leonard
Mine biler: http://vw.leonard.dk/
| |
Johan Holst Nielsen (03-10-2007)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 03-10-07 16:38 |
|
Leonard wrote:
> Jeg kunne selvfølgelig bare bruge den første og så tilføje Z ligesom jeg
> bliver nødt til at tilføje ÆØÅ, men det må da kunne gøres mere elegant?
>
for($i=65;$i<=90;$i++) {
echo chr($i);
}
--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk
| |
Johan Holst Nielsen (03-10-2007)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 03-10-07 17:23 |
|
Johan Holst Nielsen wrote:
> Leonard wrote:
>> Jeg kunne selvfølgelig bare bruge den første og så tilføje Z ligesom jeg
>> bliver nødt til at tilføje ÆØÅ, men det må da kunne gøres mere elegant?
>>
>
> for($i=65;$i<=90;$i++) {
> echo chr($i);
> }
Ah - læste ikke lige det med ÆØÅ også :) Så burde du nok nærmere lave
det således:
/* Build array */
$chars = range(65,90);
$chars[] = 198; //add Æ
$chars[] = 216; //add Ø
$chars[] = 197; //add Å
/* Loop through */
foreach($range as $i) {
/* Convert ascii to char */
echo chr($i);
}
Så undgår du at skulle lave noget særskilt for ÆØÅ - men blot køre det i
samme loop....
--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk
| |
Peter Brodersen (03-10-2007)
| Kommentar Fra : Peter Brodersen |
Dato : 03-10-07 18:07 |
|
On Wed, 03 Oct 2007 18:22:39 +0200, Johan Holst Nielsen
<spam@phpgeek.dk> wrote:
>$chars = range(65,90);
range() tager i øvrigt også bogstaver, så her kan man nøjes med "A" og
"Z" som argumenter.
Det kan dog måske være mere overskueligt bare at lave en udtømmende
liste, fx:
$chars = str_split("ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ");
--
- Peter Brodersen
Kendt fra Internet
| |
Johan Holst Nielsen (03-10-2007)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 03-10-07 18:15 |
|
Peter Brodersen wrote:
> On Wed, 03 Oct 2007 18:22:39 +0200, Johan Holst Nielsen
> <spam@phpgeek.dk> wrote:
>
>> $chars = range(65,90);
>
> range() tager i øvrigt også bogstaver, så her kan man nøjes med "A" og
> "Z" som argumenter.
Ooh :) min hukommelse spillede mig et puds der - kunne jeg ikke huske :)
> Det kan dog måske være mere overskueligt bare at lave en udtømmende
> liste, fx:
>
> $chars = str_split("ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ");
Er en helt anden mulighed - men ville det ikke være at foretrække at
smide det dirkete i et array med det samme - i stedet for at lave en
str_split på den?
$chars = array('A','B'...,'Å');
Det giver ikke nogen forskel rent læseligt (for mig?) - og sparer et
enkelt funktionskald.
--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk
| |
Martin (03-10-2007)
| Kommentar Fra : Martin |
Dato : 03-10-07 18:50 |
|
Johan Holst Nielsen wrote:
>> $chars = str_split("ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ");
>
> Er en helt anden mulighed - men ville det ikke være at foretrække at
> smide det dirkete i et array med det samme - i stedet for at lave en
> str_split på den?
>
> $chars = array('A','B'...,'Å');
>
> Det giver ikke nogen forskel rent læseligt (for mig?) - og sparer et
> enkelt funktionskald.
Men tager fandme langtid at skrive istedet for ABCDEF osv. :)
| |
Johan Holst Nielsen (03-10-2007)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 03-10-07 19:14 |
|
Martin wrote:
> Johan Holst Nielsen wrote:
>>> $chars = str_split("ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ");
>>
>> Er en helt anden mulighed - men ville det ikke være at foretrække at
>> smide det dirkete i et array med det samme - i stedet for at lave en
>> str_split på den?
>>
>> $chars = array('A','B'...,'Å');
>>
>> Det giver ikke nogen forskel rent læseligt (for mig?) - og sparer et
>> enkelt funktionskald.
>
> Men tager fandme langtid at skrive istedet for ABCDEF osv. :)
Jah - men det skal skrives en gang? Vil tro det handler om +-20 sekunder
ekstra - tror ikke kunderne klager over det kommer oveni timeprisen ;)
Ellers giver jeg gerne 20 sekunders rabat. Endnu hurtigere er det dog at
skrive range i så fald?
--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk
| |
Bertel Lund Hansen (04-10-2007)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 04-10-07 13:22 |
|
Martin skrev:
>> $chars = array('A','B'...,'Å');
> Men tager fandme langtid at skrive istedet for ABCDEF osv. :)
Ikke hvis man er effektiv. Skriv alfabetet uden mellemrum, skriv
så ', ' og kopier den sekvens. Derefter bruger man Shift+Insert
og PilHøjre en gang for hvert bogstav.
Bortset derfra bruger jeg strengformatet når jeg laver
alfabetfunktioner. Det er lige så let at henvise til elementerne
i koden som ved et array.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
Peter Brodersen (03-10-2007)
| Kommentar Fra : Peter Brodersen |
Dato : 03-10-07 18:52 |
|
On Wed, 03 Oct 2007 19:15:06 +0200, Johan Holst Nielsen
<spam@phpgeek.dk> wrote:
>> $chars = str_split("ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ");
>
>Er en helt anden mulighed - men ville det ikke være at foretrække at
>smide det dirkete i et array med det samme - i stedet for at lave en
>str_split på den?
>
>$chars = array('A','B'...,'Å');
>
>Det giver ikke nogen forskel rent læseligt (for mig?) - og sparer et
>enkelt funktionskald.
Hep, det er helt op til hvad man synes er en visuelt bedst
præsentation. Range-fordelen kan være mere klar i, at der er tale om
alle bogstaver fra A til Z, hvorimod tekststrengen i princippet kunne
udelade nogen.
Men jeg vil tro, at lige så snart, man ser ABCD... går man ud fra, at
det er alle bogstaver. Derudover kan man selvfølgelig smide en
kommentar.
Så det er et spørgsmål, om det er en statisk liste, og hvem der
forventes at læse koden i øvrigt :)
--
- Peter Brodersen
Kendt fra Internet
| |
|
|