|
| $_POST[navn] eller $_POST['navn'] eller $_~ Fra : Leif Neland |
Dato : 08-02-08 10:29 |
|
Skal index være i quotes?
Hvad er mest rigtigt (og effektivt)?
Alle ser ud til at virke
Leif
| |
Christian Hansen (08-02-2008)
| Kommentar Fra : Christian Hansen |
Dato : 08-02-08 11:05 |
|
Leif Neland wrote:
> Skal index være i quotes?
Ja, forstil dig følgende:
define("navn","tada");
print $_POST["navn"];
print $_POST[navn];
I første print vil blive udskrevet den værdi, der har nøglen "navn"
I andet print vil blive udskrevet den værdi, der har nøglen "tada". Det
skyldes at php vil læse navn som en konstant, da den er defineret
tidligere som en sådanne. Havde vi ikke defineret konstanten, ville
begge printstatements ha udskrevet værdien med nøglen "navn". PHP
forsøger altså at gætte, hvad du mener og det er "farligt".
Korrekt burde man benytte constant("navn"), når man vil referere til
konstanten navn, altså:
print $_POST["navn"];
print $_POST[constant("navn")];
Og så altid sætte strengværdier i "" eller ''-
Så er alle tvetydigheder ryddet af vejen.
Det kan virke mere besværligt at skulle gøre, men tro mig - i længden er
det rigtig godt givet ud, da man undgår mange potentielle faldgrupper
- og så har man eksplicit fortalt php, hvad man vil, og så er man fri
for, at den gætter forkert.
Mvh Chrsitian
Mvh Christian
| |
Martin (08-02-2008)
| Kommentar Fra : Martin |
Dato : 08-02-08 12:57 |
|
Christian Hansen wrote:
> Leif Neland wrote:
>> Skal index være i quotes?
>
> Ja, forstil dig følgende:
>
> define("navn","tada");
>
> print $_POST["navn"];
> print $_POST[navn];
>
> I første print vil blive udskrevet den værdi, der har nøglen "navn"
> I andet print vil blive udskrevet den værdi, der har nøglen "tada". Det
> skyldes at php vil læse navn som en konstant, da den er defineret
> tidligere som en sådanne. Havde vi ikke defineret konstanten, ville
> begge printstatements ha udskrevet værdien med nøglen "navn". PHP
> forsøger altså at gætte, hvad du mener og det er "farligt".
>
> Korrekt burde man benytte constant("navn"), når man vil referere til
> konstanten navn, altså:
>
> print $_POST["navn"];
> print $_POST[constant("navn")];
>
> Og så altid sætte strengværdier i "" eller ''-
>
> Så er alle tvetydigheder ryddet af vejen.
>
> Det kan virke mere besværligt at skulle gøre, men tro mig - i længden er
> det rigtig godt givet ud, da man undgår mange potentielle faldgrupper -
> og så har man eksplicit fortalt php, hvad man vil, og så er man fri for,
> at den gætter forkert.
>
> Mvh Chrsitian
>
> Mvh Christian
Også er der ingen forskel på om man bruger
$_POST['navn'] eller $_POST["navn"]
Jeg bruger selv '' da det ligger lige til fingeren, mens " kræver 2
hænder :)
echo '<div class="foo">' . $_POST['navn'] . '</div>';
Så kan man gennemskue at alle "" er HTML karakter, og ' er PHP tegn (så
længe man ikke bruger javascript ihvertfald)
echo '<div class="foo" onclick="doThis(\'Say Hello\')">' .
$_POST['navn'] . '</div>';
| |
Christian Hansen (08-02-2008)
| Kommentar Fra : Christian Hansen |
Dato : 08-02-08 13:08 |
|
Martin wrote:
> Også er der ingen forskel på om man bruger
> $_POST['navn'] eller $_POST["navn"]
>
Jo, det er der faktisk. Bruger man "" interpoleres variable. "$var" er
således ikke det samme som '$var'. I tilfældet med "" oversættes $var i
strengen til den værdi $var indeholder. I det andet tilfælde sker dette
ikke.
prøv:
$var = "tada";
print '$var'; //udskriver $var
print "$var"; //udskriver tada
Skal $var udskrives som en del af en streng, ser de to tilfælde således ud:
print 'Når man vinder siger man ' . $var . ' højt og klart';
print "Når man vinder siger man $var højt og klart";
Mvh Christian
| |
Martin (08-02-2008)
| Kommentar Fra : Martin |
Dato : 08-02-08 16:03 |
|
Christian Hansen wrote:
> Martin wrote:
>
>> Også er der ingen forskel på om man bruger
>> $_POST['navn'] eller $_POST["navn"]
>>
>
>
> Jo, det er der faktisk. Bruger man "" interpoleres variable. "$var" er
> således ikke det samme som '$var'. I tilfældet med "" oversættes $var i
> strengen til den værdi $var indeholder. I det andet tilfælde sker dette
> ikke.
>
> prøv:
>
> $var = "tada";
> print '$var'; //udskriver $var
> print "$var"; //udskriver tada
>
> Skal $var udskrives som en del af en streng, ser de to tilfælde således ud:
>
> print 'Når man vinder siger man ' . $var . ' højt og klart';
> print "Når man vinder siger man $var højt og klart";
Øhm... nu snakker vi om $_POST['foo'] og $_POST["foo"] :)
Ved godt at '' og "" er forskelligt i en echo/print
| |
Christian Hansen (08-02-2008)
| Kommentar Fra : Christian Hansen |
Dato : 08-02-08 17:05 |
|
Martin wrote:
>
> Øhm... nu snakker vi om $_POST['foo'] og $_POST["foo"] :)
>
> Ved godt at '' og "" er forskelligt i en echo/print
Det har ikke noget med echo/print at gøre. Det har at gøre med, hvordan
du ønsker php skal håndtere en given streng, Om du udskriver en streng
eller bruger den som nøgle i et array gør ingen forskel i phps måde at
håndtere strengen på. Anvender du "" omkring din streng beder du php om
at parse strengen og erstatte variable med deres respektive værdier.
Bruger du '' fortæller du php, at den skal holde nallerne fra strengen
og lade den være, som du har skrevet den.
I et tænkt eksempel har du et array, som bland andet indeholder nøglerne
adresse_1, adresse_2 og adresse_3
Dem vil du udskrive via en løkke og har derfor 2 ( faktisk 3 ) muligheder:
for ( $c = 1; $c < 4; $c++ ) print $array["adresse_$c"];
eller
for ( $c = 1; $c < 4; $c++ ) print $array['adresse_' . $c];
Hvis man gør sådan her:
for ( $c = 1; $c < 4; $c++ ) print $array["adresse_" . $c];
Går man over åen efter vand - så beder man php om at bruge tid på både
at interpolere og lægge to strenge sammen - men det vil også virke.
hvis du gjorde sådan her:
for ( $c = 1; $c < 4; $c++ ) print $array['adresse_$c'];
Ville du ikke få det forventede resultat.
Så det er altså ikke ligegyldigt om man benytter "" eller '' - eller
rettere - man skal være opmærksom på, at der er en forskel.
Mvh Christian
| |
Philip Nunnegaard (08-02-2008)
| Kommentar Fra : Philip Nunnegaard |
Dato : 08-02-08 17:42 |
|
"Martin" <maaNO@SPAMscandesigns.dk> skrev i meddelelsen
news:47ac6f3f$0$90272$14726298@news.sunsite.dk...
> Øhm... nu snakker vi om $_POST['foo'] og $_POST["foo"] :)
Også her er der en forskel.
Eksempler:
$_POST["foo$bar"] vil formentlig ikke give samme resultat som
$_POST['foo$bar'], hvis sidstnævnte overhovedet kan lade sig gøre.
Har jeg f.eks. sat $bar til værdien 25, vil den i det første tilfælde med "
returnere $_POST["foo25"], mens den i det andet tilfælde vil returnere
$_POST['foo$bar'].
| |
Dan Storm (08-02-2008)
| Kommentar Fra : Dan Storm |
Dato : 08-02-08 13:22 |
|
Martin skrev:
>
> Også er der ingen forskel på om man bruger
> $_POST['navn'] eller $_POST["navn"]
Christian har vist besvaret den...
>
> Jeg bruger selv '' da det ligger lige til fingeren, mens " kræver 2
> hænder :)
>
> echo '<div class="foo">' . $_POST['navn'] . '</div>';
>
> Så kan man gennemskue at alle "" er HTML karakter, og ' er PHP tegn (så
> længe man ikke bruger javascript ihvertfald)
>
> echo '<div class="foo" onclick="doThis(\'Say Hello\')">' .
> $_POST['navn'] . '</div>';
Det er en smagssag. Personligt bruger jeg altid " til mine strenge.
echo "<div class=\"foo\">".$_POST["navn"]."</div>\n";
For mig betyder det en langt større kontrol over mit output.
--
Dan Storm - storm at err0r dot dk / http://err0r.dk
Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!
| |
Bertel Lund Hansen (08-02-2008)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 08-02-08 13:39 |
|
Martin skrev:
> Jeg bruger selv '' da det ligger lige til fingeren, mens " kræver 2
> hænder :)
Jeg bruger enkelte når det ikke er nødvendigt med dobbelte, og
jeg bruger enkelte til HTML.
> Så kan man gennemskue at alle "" er HTML karakter, og ' er PHP tegn (så
> længe man ikke bruger javascript ihvertfald)
Du er bare nødt til at bruge dobbelte anførselstegn somme tider i
PHP (ved variable eller koder der skal oversættes). Det er derfor
det er smartere at bruge enkelte til HTML.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
Dan Storm (08-02-2008)
| Kommentar Fra : Dan Storm |
Dato : 08-02-08 13:57 |
|
Bertel Lund Hansen skrev:
> Du er bare nødt til at bruge dobbelte anførselstegn somme tider i
> PHP (ved variable eller koder der skal oversættes). Det er derfor
> det er smartere at bruge enkelte til HTML.
Begrund 'smartere'? Vi har haft debatten før - og der er ikke noget der
gør det 'smartere' at bruge ' istedet for ". Du kan kalde det en
smagssag, men det gør det ikke 'smartere'.
--
Dan Storm - storm at err0r dot dk / http://err0r.dk
Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!
| |
Martin (08-02-2008)
| Kommentar Fra : Martin |
Dato : 08-02-08 16:04 |
|
Bertel Lund Hansen wrote:
> Martin skrev:
>
>> Jeg bruger selv '' da det ligger lige til fingeren, mens " kræver 2
>> hænder :)
>
> Jeg bruger enkelte når det ikke er nødvendigt med dobbelte, og
> jeg bruger enkelte til HTML.
>
>> Så kan man gennemskue at alle "" er HTML karakter, og ' er PHP tegn (så
>> længe man ikke bruger javascript ihvertfald)
>
> Du er bare nødt til at bruge dobbelte anførselstegn somme tider i
> PHP
Hvor?
| |
Bertel Lund Hansen (08-02-2008)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 08-02-08 17:30 |
|
Martin skrev:
> > Du er bare nødt til at bruge dobbelte anførselstegn somme tider i
> > PHP
> Hvor?
Alle steder hvor der indgår en variabel eller en kode. Bevares, variablen
kan prikkes ud, men det kan koden ikke.
echo '\n'; Udskrift: \n
echo "\n"; Udskrift: [linjeskift]
echo 'Klokkeslæt: $tidsrum'; Udskrift: Klokkeslæt: $tidsrum
echo "Klokkeslæt: $tidsrum"; Udskrift: Klokkeslæt: 17:43:08
Det sidste kunne også løses sådan her:
echo 'Klokkeslæt:'.$tidsrum; Udskrift: Klokkeslæt: 17:43:08
Selv bruger jeg altid variable inden i anførselstegnene hvor det
er muligt (og praktisk).
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
Johan Holst Nielsen (09-02-2008)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 09-02-08 11:56 |
|
Bertel Lund Hansen wrote:
> Martin skrev:
>
>>> Du er bare nødt til at bruge dobbelte anførselstegn somme tider i
>>> PHP
>
>> Hvor?
>
> Alle steder hvor der indgår en variabel eller en kode. Bevares, variablen
> kan prikkes ud, men det kan koden ikke.
>
> echo '\n'; Udskrift: \n
> echo "\n"; Udskrift: [linjeskift]
>
> echo 'Klokkeslæt: $tidsrum'; Udskrift: Klokkeslæt: $tidsrum
> echo "Klokkeslæt: $tidsrum"; Udskrift: Klokkeslæt: 17:43:08
>
> Det sidste kunne også løses sådan her:
> echo 'Klokkeslæt:'.$tidsrum; Udskrift: Klokkeslæt: 17:43:08
>
> Selv bruger jeg altid variable inden i anførselstegnene hvor det
> er muligt (og praktisk).
Enig i at " af og til er ret vigtigt i PHP... men det er altså ikke
nødvendige...
Jeg bruger faktisk mere eller mindre KUN " i tilfælde at jeg skal lave
\n eller \t eller lign...
F.eks. ville jeg til en hver tid skrive
echo 'Klokkeslet: '.$tidsrum;
Måske af gammel vane - da min tidligere editor ikke lavede ordentlig
syntax highlighting - men også da jeg synes det giver en pænere struktur...
Derimod kunne
echo "\n";
godt løeses med
echo '
';
Uden problemer - dog vil jeg der til enhver tid anbefale \n'et - men det
er jo også ved at være en rent teoretisk diskussion nu.
--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk
| |
Bertel Lund Hansen (10-02-2008)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 10-02-08 09:41 |
|
Johan Holst Nielsen skrev:
> Derimod kunne
> echo "\n";
> godt løeses med
> echo '
> ';
Det er da også rigtigt. Det bruger jeg af og til i stedet for at
hoppe ud af PHP - specielt hvis der i en lang stribe ren HTML
lige står en enkelt variabel eller to. Så skriver jeg
echo "
blablablablabla
bla $bla blabla
";
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
penta@panto.com (08-02-2008)
| Kommentar Fra : penta@panto.com |
Dato : 08-02-08 19:15 |
|
"Leif Neland" <leif@neland.dk> skrev i en meddelelse
news:47ac20ef$0$2102$edfadb0f@dtext02.news.tele.dk...
> Skal index være i quotes?
>
> Hvad er mest rigtigt (og effektivt)?
>
> Alle ser ud til at virke
>
> Leif
>
>
OT: Skod-sprog som ikke er entydigt!
sorry...
tomov
| |
Birger (09-02-2008)
| Kommentar Fra : Birger |
Dato : 09-02-08 09:51 |
|
<penta@panto.com> skrev i en meddelelse
news:47ac9bee$0$2088$edfadb0f@dtext02.news.tele.dk...
> "Leif Neland" <leif@neland.dk> skrev i en meddelelse
> news:47ac20ef$0$2102$edfadb0f@dtext02.news.tele.dk...
>> Skal index være i quotes?
>>
>> Hvad er mest rigtigt (og effektivt)?
>>
>> Alle ser ud til at virke
>>
>> Leif
>>
>>
>
> OT: Skod-sprog som ikke er entydigt!
>
>
De er sure, sagde ræven...
Der er ikke noget, der ikke er entydigt.
Men man skal selvfølgelig forstå hvad man gør, og hvordan man skal få de
resultater man skal bruge.
Sådan er det vist med alle programmeringssprog.
Birger
-----
http://bbsorensen.dk
http://varmeretter.dk - hverdagsmad. Sundt, nemt, hurtigt og billigt. Daglig
opdatering.
| |
|
|