/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408195
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste