|
| Tildele mange strenge samme værdi Fra : Kim Ludvigsen |
Dato : 01-09-11 11:59 |
|
Er der en nem måde at tildele den samme værdi til mange
strenge?
I stil med $test* = "samme værdi";
Hvor $test1 og $teststring osv. alle får den samme værdi.
--
Mvh. Kim Ludvigsen
Tips til hjemmesidesnedkeren:
http://kimludvigsen.dk/tips-internet-websnedker.php
| |
scootergrisen (01-09-2011)
| Kommentar Fra : scootergrisen |
Dato : 01-09-11 05:16 |
|
<?php
$a = $b = $c = "tekst";
echo $a . $b . $c;
?>
| |
Kim Ludvigsen (01-09-2011)
| Kommentar Fra : Kim Ludvigsen |
Dato : 01-09-11 12:53 |
|
Den 01-09-2011 13:15, scootergrisen skrev:
> <?php
>
> $a = $b = $c = "tekst";
Tak til jer begge. Jeg skal kun gøre det en enkelt gang,
hvor jeg skal tildele samme værdi til omkring 30 strenge, og
jeg syntes, det ville være meget pænere med en enkelt linje
i stedte for 30. Ovenstående er lidt bedre end de 30 linjer,
så den nupper jeg.
--
Mvh. Kim Ludvigsen
Omfattende brugerguide for begyndere om ubuntu Linux:
http://kimludvigsen.dk/linux
| |
Bertel Lund Hansen (01-09-2011)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 01-09-11 12:47 |
|
Kim Ludvigsen skrev:
> Er der en nem måde at tildele den samme værdi til mange
> strenge?
Ikke specielt.
Skrivemæssigt kan man lave en forenkling der er logisk hvis det
er vigtigt med samme værdi, men også kan bruges selv om det ikke
er:
$test1 = $test2 = $test3 = "samme værdi";
Du kan også lave en funktion som jo egentlig ikke forenkler
noget, men nede i koden ser det overskueligt ud, og hvis det skal
bruges flere gange er det selvfølgelig smart.
De variable skal enten overføres som parametre eller 'kendes' via
GLOBAL:
A function set_values ($val=8) {
GLOBAL $test1, $test2, $test3;
$test1 = $test2 = $test3 = $val;
}
B function set_values ($test1, $test2, $test3,$val=8) {
$test1 = $test2 = $test3 = $val;
}
Og i koden:
A set_values(7);
B set_values($test1, $test2, $test3,7);
Man kan lave noget fusk ved at bruge dobbelt $-tegn hvorved man
kan bruge variablenes navne som hypervariable, men det giver
ugennemskuelig kode. Hvis man gør det, kan man sætte værdien i en
loop. Hvis du insisterer, skal jeg gerne lave et eksempel.
Note:
Jeg har givet parameteren $val en default værdi blot for at
illustrere at det er muligt. Hvis man flere gange skal bruge
samme værdi, er det en smart måde at gøre det på. Med
funktionskaldet
A set_values();
får variablene den forudindstillede værdi. Det er da vigtigt at
variablen står sidst i parameterlisten.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
Christian Hansen (01-09-2011)
| Kommentar Fra : Christian Hansen |
Dato : 01-09-11 13:21 |
|
On 09/01/2011 01:46 PM, Bertel Lund Hansen wrote:
> Man kan lave noget fusk ved at bruge dobbelt $-tegn hvorved man
> kan bruge variablenes navne som hypervariable, men det giver
> ugennemskuelig kode. Hvis man gør det, kan man sætte værdien i en
> loop. Hvis du insisterer, skal jeg gerne lave et eksempel.
for ( $c = 0; $c < 10; $c++ ) ${"test$c"} = 'tada';
print $test5;
Jeg synes ikke, at det er fusket, men at man har brug for det kan være
et tegn på, at der er noget grundlæggende galt med ens struktur. Bemærk
at jeg skrev KAN være. Det er en alarmklokke,hvor man lige bør lave et
ekstra tjek af sin metode.
--
Christian Hansen
http://www.resource-it.dk/
| |
Martin Larsen (01-09-2011)
| Kommentar Fra : Martin Larsen |
Dato : 01-09-11 19:50 |
|
Kim Ludvigsen wrote:
> Er der en nem måde at tildele den samme værdi til mange strenge?
Er variablerne defineret i forvejen? For I så fald er der nogle
cowboytricks. Men hvis de ikke er defineret kan koden jo trods alt ikke
gætte hvad de skal hedde, så med mindre der er tale om et løbenummer
eller lignende, er du altså nødt til at fortælle PHP hvad de skal hedde :)
| |
Kim Ludvigsen (01-09-2011)
| Kommentar Fra : Kim Ludvigsen |
Dato : 01-09-11 20:33 |
|
Den 01-09-2011 20:49, Martin Larsen skrev:
> Kim Ludvigsen wrote:
>
>> Er der en nem måde at tildele den samme værdi til mange
>> strenge?
>
> Er variablerne defineret i forvejen? For I så fald er der
> nogle cowboytricks. Men hvis de ikke er defineret kan koden
> jo trods alt ikke gætte hvad de skal hedde, så med mindre
> der er tale om et løbenummer eller lignende, er du altså
> nødt til at fortælle PHP hvad de skal hedde :)
[rødme]
Så langt havde jeg ikke fået tænkt. De var ikke defineret i
forvejen.
[/rødme]
Ok, jeg kunne bytte lidt rundt på en rækkefølge, så de var
defineret, men det er omsonst, jeg fik klaret det med den
tidligere foreslåede løsning:
$test1 = $test2 = $test3 = "samme værdi";
--
Mvh. Kim Ludvigsen
Undgå virus og andet snavs på computeren:
http://pc-sikkerhed.dk
| |
Anders Wegge Keller (01-09-2011)
| Kommentar Fra : Anders Wegge Keller |
Dato : 01-09-11 21:40 |
|
Kim Ludvigsen <usenet@kimludvigsen.dk> writes:
> Ok, jeg kunne bytte lidt rundt på en rækkefølge, så de var defineret,
> men det er omsonst, jeg fik klaret det med den tidligere foreslåede
> løsning:
> $test1 = $test2 = $test3 = "samme værdi";
Ikke fordi det ikke virker, men tror du ikke du ville være bedre
tjent med et array i stedet?
--
/Wegge
Leder efter redundant peering af dk.*,linux.debian.*
| |
Kim Ludvigsen (01-09-2011)
| Kommentar Fra : Kim Ludvigsen |
Dato : 01-09-11 23:36 |
|
Den 01-09-2011 22:39, Anders Wegge Keller skrev:
> Kim Ludvigsen<usenet@kimludvigsen.dk> writes:
>
>> Ok, jeg kunne bytte lidt rundt på en rækkefølge, så de var defineret,
>> men det er omsonst, jeg fik klaret det med den tidligere foreslåede
>> løsning:
>> $test1 = $test2 = $test3 = "samme værdi";
>
> Ikke fordi det ikke virker, men tror du ikke du ville være bedre
> tjent med et array i stedet?
Jeg er ikke sikker på, at det ville være en fordel med et array.
Der er tale om en masse strenge, der normalt har forskellige
værdier, men hvis et bestemt kriterium er opfyldt, skal de
have samme værdi.
Det fungerer helt fint med den nuværende metode, og det er
overskueligt og nemt at rette, hvis jeg en dag skal have
udskiftet værdien.
--
Mvh. Kim Ludvigsen
Undgå virus og andet snavs på computeren:
http://pc-sikkerhed.dk
| |
Anders Wegge Keller (02-09-2011)
| Kommentar Fra : Anders Wegge Keller |
Dato : 02-09-11 06:36 |
|
Kim Ludvigsen <usenet@kimludvigsen.dk> writes:
> Den 01-09-2011 22:39, Anders Wegge Keller skrev:
> > Kim Ludvigsen<usenet@kimludvigsen.dk> writes:
> >
> >> Ok, jeg kunne bytte lidt rundt på en rækkefølge, så de var defineret,
> >> men det er omsonst, jeg fik klaret det med den tidligere foreslåede
> >> løsning:
> >> $test1 = $test2 = $test3 = "samme værdi";
> >
> > Ikke fordi det ikke virker, men tror du ikke du ville være bedre
> > tjent med et array i stedet?
>
> Jeg er ikke sikker på, at det ville være en fordel med et array.
Du kender koden, så det er du jo bedst til at vurdere.
> Der er tale om en masse strenge, der normalt har forskellige værdier,
> men hvis et bestemt kriterium er opfyldt, skal de have samme værdi.
Det er bare det at det er noget nemmere at sætte samme værdi på alle
elementer i et array, ved at loope hen over det.
> Det fungerer helt fint med den nuværende metode, og det er
> overskueligt og nemt at rette, hvis jeg en dag skal have udskiftet
> værdien.
Kender du The Daily WTF? Der kan du finde en del eksempler på hvad
der er startet med at være nemt og overskueligt.
Eksempelvis denne
< http://thedailywtf.com/Articles/The-String-Padding-Trick.aspx>
--
/Wegge
Leder efter redundant peering af dk.*,linux.debian.*
| |
|
|