Oprettet lør. d. 28. juli 2001 kl. 16:29:40

appel
appel (16.032 point. Point ude: 2.485)

gennemløb af variable

hej,

Hvordan gennemløber jeg mine variable som hedder fx \"$var_1\",\"$var_2\" ...\"$var_100\", uden at skrive samtlige variable op?

på forhånd tak

Skrevet lør. d. 28. juli 2001 kl. 16:34:17| #1

appel
appel (16.032 point)
man kunne forestille sig at man gerne ville ligge samtlige værdier af variablene sammen.

Skrevet lør. d. 28. juli 2001 kl. 16:34:17| #2

gizmo-gizmo
gizmo-gizmo (48.185 point)
fx:
$i = 1;
while($var_$i != \"\") {
if ($var_$i == \"something\") {
do some other things :)
}
}

Skrevet lør. d. 28. juli 2001 kl. 16:34:55| #3

gizmo-gizmo
gizmo-gizmo (48.185 point)
doh:
$i++;
før den sidste }

Skrevet lør. d. 28. juli 2001 kl. 16:35:06| #4

appel
appel (16.032 point)
ok, det kan man godt?, jeg troede ikke det var muligt at gøre det på slig måde, jeg tester lige...

Skrevet lør. d. 28. juli 2001 kl. 16:40:39| #5

barefoot
barefoot (28.642 point)
for($i=0; $i<=100; $i++){
  $var_name = \'var_\'.$i;
  echo $$var_name;
}

Skrevet lør. d. 28. juli 2001 kl. 16:45:21| #6

*host* var det ikke nu du skulle begynde at taenke paa arrays........

Skrevet lør. d. 28. juli 2001 kl. 16:47:16| #7

appel
appel (16.032 point)
Dette virker ikke:
$var_5 = \"virker\";
    for ($i=0;$i<6;$i++){
        if (!empty($var_$i)){
            //print \"$var_$i\";
            echo $var_$i;
            }
        }
hvad gør jeg galt?

Skrevet lør. d. 28. juli 2001 kl. 16:48:59| #8

appel
appel (16.032 point)
jo hvis det er kan lade sig gøre at tilegne en værdi i et array en værdi fra en html form. Men det kan man måske nok godt... jeg tjekker lige...

Skrevet lør. d. 28. juli 2001 kl. 16:50:35| #9

appel
appel (16.032 point)
det kan det jo...

Skrevet lør. d. 28. juli 2001 kl. 16:52:11| #10

appel
appel (16.032 point)
men jeg ville nu stadig godt have svar på mit spørgsmål...

Skrevet lør. d. 28. juli 2001 kl. 16:53:36| #11

barefoot
barefoot (28.642 point)
Det har jeg jo givet dig!

Du skal bruge min løsning hvis du vil gennemløbe alle og f.eks. udskrive dem.

Skrevet lør. d. 28. juli 2001 kl. 16:56:31| #12

barefoot
barefoot (28.642 point)
Jeg vil mene at du skal gøre sådan med dit eksempel:
$var_5 = \"virker\";
for ($i=0;$i<6;$i++){
    if (!empty($$var_$i)){
        //print $$var_$i;
        echo $$var_$i;
    }
}

Skrevet lør. d. 28. juli 2001 kl. 16:57:41| #13

appel
appel (16.032 point)
det har du da egentlig også, jeg havde bare ikke lige fået det testet men det virker. Tak for det.

Skrevet lør. d. 28. juli 2001 kl. 16:58:01| #14

appel
appel (16.032 point)
tak for det.

Skrevet lør. d. 28. juli 2001 kl. 16:58:07| #15

barefoot
barefoot (28.642 point)
Hvis ikke det virker så gør sådan her:

$var_5 = \"virker\";
for ($i=0;$i<6;$i++){
    $var_name = \'var\'.$i;
    if (!empty($$var_name)){
        //print $$var_name;
        echo $$var_name;
    }
}

Skrevet lør. d. 28. juli 2001 kl. 16:58:28| #16


Skrevet lør. d. 28. juli 2001 kl. 16:59:19| #17

appel
appel (16.032 point)
jeg gjorde nu sådan:
$var_5 = \"virker\";
for($i=0; $i<=100; $i++){
  $var_name = \'var_\'.$i;
  echo $$var_name;

Skrevet lør. d. 28. juli 2001 kl. 16:59:28| #18

det er meget fint du svarer barefoot, men har du overvejet optimering af din loesning... ?

naa, det er midnat og tid til at knalde brikker... ses imorgen

Skrevet lør. d. 28. juli 2001 kl. 17:01:36| #19

appel
appel (16.032 point)
optimering? fortæl fortæl

Skrevet lør. d. 28. juli 2001 kl. 17:03:08| #20

barefoot
barefoot (28.642 point)
ljweb => hvad mener du?
Det er da det smarteste hvis man vil gennemløbe alle variabler?
Har du måske et andet forslag?
Udover selvfølgelig at brbuge arrays i stedet.

Skrevet lør. d. 28. juli 2001 kl. 17:04:48| #21

appel
appel (16.032 point)
i et array bliver man vel også nød til at gennemløbe samtlige variable

Skrevet lør. d. 28. juli 2001 kl. 17:05:24| #22

appel
appel (16.032 point)
eller elementer

Skrevet lør. d. 28. juli 2001 kl. 17:05:44| #23

bare >> det er da klart at appel skal anvende arrays til hans arbejde, der er ingen tvivl om det. spoergsmaalet er blot antallet af variabler der anvendes...

Skrevet lør. d. 28. juli 2001 kl. 17:06:43| #24

barefoot
barefoot (28.642 point)
appel => du kan godt bruge arrays.

<INPUT TYPE=\"text\" NAME=\"dit_array\">
<INPUT TYPE=\"text\" NAME=\"dit_array\">
<INPUT TYPE=\"text\" NAME=\"dit_array\">
<INPUT TYPE=\"text\" NAME=\"dit_array\">


På den anden side:
for($i=0; $i<sozeof($array)); $i++){
  echo $dit_array[$i].\'<br>\';
}

Skrevet lør. d. 28. juli 2001 kl. 17:07:31| #25

barefoot
barefoot (28.642 point)
Første del skal selvfølgelig være:

<INPUT TYPE=\"text\" NAME=\"dit_array[]\">
<INPUT TYPE=\"text\" NAME=\"dit_array[]\">
<INPUT TYPE=\"text\" NAME=\"dit_array[]\">
<INPUT TYPE=\"text\" NAME=\"dit_array[]\">

Skrevet lør. d. 28. juli 2001 kl. 17:10:06| #26

appel
appel (16.032 point)
ja det ved jeg godt, men i mit tilfælde er det ikke smartere

Skrevet lør. d. 28. juli 2001 kl. 17:11:25| #27

appel
appel (16.032 point)
kompleksiteten af ens kode bliver da den samme om man bruger arrays eller ikke, idet man ligemeget hvad skal traversere samtlige elementer.

Skrevet lør. d. 28. juli 2001 kl. 21:01:46| #28

myplacedk
myplacedk (31.315 point)
appel> Samme kompleksitet? Jeg tror vist flertallet er enig med mig i, at arrays er bedre end det her \"snusk\". :)

Jeg kan fx. lige omskrive eksemplet:

$var_5 = \"virker\";
for ($i=0;$i<6;$i++){
    $var_name = \'var\'.$i;
    if (!empty($$var_name)){
        echo $$var_name;
    }
}

bliver fx. til:

$var[5] = \"virker\";
foreach($var AS $a) {
    if (!empty($a)) {
        echo $a;
    }
}

Jeg sparer en linje, og dem der er tilbage er mere overskuelige. Men det er de mindste fordele!
Det andet sjov lyder som noget meget grumt forurening af namespace, og er ikke noget jeg kunne finde på at give til en kunde.

Skrevet søn. d. 29. juli 2001 kl. 19:07:35| #29

appel
appel (16.032 point)
Ja samme kompleksitet, du sagde at du kunne optimerer koden hvilket din løsning ikke gør (en linie ændrer ikke kompleksiteten), at du så mener det er bedre stil er en helt anden sag.

Skrevet man. d. 30. juli 2001 kl. 07:22:41| #30

myplacedk
myplacedk (31.315 point)
Du måler altså kompleksiteten i antal linjer? Så overvej dette:

foreach($var AS $a) if (!empty($a)) echo $a;

Det er slet ikke antal linjer der bekymrer mig, dem må man gerne svine med. Det er den \"snuskede\" kode der bekymrer mig ($var_name = \'var\'.$i; $$var_name), og forureningen af det globale namespace.

Hm. Nu kan det jo så være du synes den ene linje er mere overskuelig end de 5 der gør det samme. Men jeg kan fortælle dig, at min erfaring viser, at det er bedre at \"skrive det helt ud\".

Hvis du mener min kode ikke er bedre, skal du da have lov til det. Men så vil jeg gætte på, at du ikke er professionel udvikler. Du er i hvert fald ikke uddannet programmør. Right?

Skrevet man. d. 30. juli 2001 kl. 11:22:32| #31

appel
appel (16.032 point)
Jeg måler ikke kompleksitet i antal linier.
Kompleksitet bliver målt ud fra antal gange man bliver nød til at gennemløbe inddata for at få det korrekte resultat. Feks tilhører både din og min kode O(n) hvilket ikke kan gøres hurtigere da man er nød til at kigge hele arrayet eller alle variablene igennem, en linie kode til eller fra ændre ikke dette (medmindre det er en for eller while løkke...).
Det var det eneste jeg bragte på banen da du påstod du kunne optimerer koden. Optimering er et spørgsmål om at gøre koden effektivere og dermed hurtigere, det du snakker om er programmeringsstil - noget ganske andet.
I mit specifikke tilfælde, som jo ikke står beskrevet nogen steder i spørgsmål 92921, kan det faktisk godt være smart at gøre det på min måde.
Jeg kan ikke se relevansen i at bringe uddannelse på banen, men hvis du vil vide det, kan jeg fortælle dig at jeg skal til at starte på 5. semester i civilingeniør i datateknologi på Odense Universitet.

Skrevet man. d. 30. juli 2001 kl. 13:10:08| #32


Skrevet tir. d. 31. juli 2001 kl. 08:30:03| #33

myplacedk
myplacedk (31.315 point)
Jeg snakker altså om programmerings-stil. Det er IKKE godt nok at skrive kode der virker. Koden skal højest sandsynligt opdateres senere. Her kommer vi selvfølgelig ind på noget subjektivt.
Med kompleksitet ser jeg det ikke fra fortolkerens side, men fra programmørens.

Derudover har jeg lidt på fornemmelsen at arrays også er flinkere ved fortolkeren, men det er jeg nu egentlig ret ligeglad med i dette tilfælle.

Hvis dit specifikke tilfælle ikke står nogle stedet i dette spørgsmål, kan vi ikke diskutere det. Jeg diskuterer da også det eksempel der rent faktisk ER i dette spørgsmål. Og hvis vi er enige om at snakke om programmeringsSTIL, så burde du da med din (foreløbige) uddannelse kunne give mig ret. I har vel programmering med i pensum, ik\'?

Men vi kan da også snakke om det set fra fortolkerens side, selv om jeg så straks er langt mere usikker og ligeglad.
Jeg vil tro fortolkeren hellere vil oprette et array med 100 elementer, end at håndtere 100 variabler på denne måde. PHP er dog bygget op på en meget sjov måde på dette område, så det kan jeg ikke rigtigt overskue. Det er nok mere relevant i andre sprog som Java og C.

Skrevet tir. d. 31. juli 2001 kl. 11:04:53| #34

appel
appel (16.032 point)
Umiddelbart når man kun har ovenstående spørgsmål at gå ud fra vil jeg give dig ret i at arrays er bedre stil.
Men jeg har også hele tiden snakket om kompleksitet...
Nå men det var vidst det.
Altid hyggeligt med en lille diskussion :-)

Skrevet tir. d. 31. juli 2001 kl. 17:44:22| #35

myplacedk
myplacedk (31.315 point)
Kode kan altså også være kompleks at se på, og det skal man undgå.
Men jeg er da glad for at du vil give mit ret i at arrays er bedre stil, så er der da stadig håb for dig. ;-)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Brugerliste med link til profil

Oprettet den 26. maj 2012 kl. 14.29
sayn giver 30 point for svar | Giv et svar »

php curl driller

Oprettet den 26. maj 2012 kl. 08.31
PHPnQrd giver 200 point for svar | Giv et svar »

Array i array

Oprettet den 25. maj 2012 kl. 08.32
sebster giver 60 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger