Avatar billede googolplex Novice
18. februar 2003 - 23:49 Der er 13 kommentarer og
1 løsning

Forskel på " og ' ?

Jeg er lidt i tvivl om forskellen på " og ' i php, hvad er eksempelvis forskellen på:

$POST_["navn"];

og

$POST_['navn'];

Er der overhovedet nogle forskel ?

Jeg har læst mig til, at det man skriver indenfor "" bliver 'parset', hvad betyder det præcist ?

Hvad er bedst at bruge ?
Avatar billede erikjacobsen Ekspert
18. februar 2003 - 23:50 #1
Der er ingen forskel, så længe der ikke står et variabel navn med $ foran i strengen
Avatar billede googolplex Novice
18. februar 2003 - 23:53 #2
Hvad hvis der gør ?
Avatar billede tangveje Nybegynder
18. februar 2003 - 23:53 #3
"Parsed" bestyder at PHP kigger det igennem for kode som skal udføres... Sådan kort forklaret på dansk :)

Forskellen på at bruge " og ' er altså at tekst mellem " bliver kigget igennem for kode der skal udføres, det sker ikke hvis teksten står mellem '

Der er en mikroskopisk hastigheds-forskel, at bruge ' er altså en lille bitte smule hurtigere, fordi PHP ikke skal kigge teksten igennem for kode først. Forskellen er så lille at det sjældent kan betale sig at tænke over det, men er hastighed MEGET vigtigt for dig eller dit projekt er det en ting at huske :)
Avatar billede tangveje Nybegynder
18. februar 2003 - 23:55 #4
Og med "kode" mener jeg sådan set blot variabler :)
Avatar billede erikjacobsen Ekspert
18. februar 2003 - 23:57 #5
Kan du bevise, der er en hastighedsforskel? Selv med '...'
skal der smages på hvert tegn for at se om der nu fx skulle
stå \'  - det koster såmænd det samme.
Avatar billede googolplex Novice
19. februar 2003 - 00:00 #6
Vil det sige, at hvis jeg skriver:

echo 'Dit navn er $navn';

...så går det galt ?
Avatar billede tangveje Nybegynder
19. februar 2003 - 00:00 #7
Det kan nok blive meget svært at bevise, i hvert fald har jeg ikke i sinde at gøre forsøget... Det er dog den generelle holdning jeg har set stort set alle steder det er diskuteret, og det lyder jo ganske logisk. Med " skal den både lede efter \ og variabler, med ' skal den kun lede efter \, så selvom forskellen helt sikkert er mikroskopisk, vil jeg mene den er der. Men nej, jeg kan ikke vise nogen konkrete tal eller klare beviser, kun logik :)
Avatar billede tangveje Nybegynder
19. februar 2003 - 00:01 #8
Nej, så udskriver den bare

Dit navn er $navn

Istedet for værdien af $navn
Avatar billede googolplex Novice
19. februar 2003 - 00:03 #9
Fint, det var også det jeg mente :)

Tak for hjælpen, svar ?
Avatar billede tangveje Nybegynder
19. februar 2003 - 00:07 #10
Tja, hvis ikke erik vil have, han kom jo først :)
Avatar billede googolplex Novice
19. februar 2003 - 00:09 #11
Ja, men du var bedst :P
Avatar billede tangveje Nybegynder
19. februar 2003 - 00:12 #12
Jamen så tak da :)
Avatar billede erikjacobsen Ekspert
19. februar 2003 - 00:19 #13
"Det er dog den generelle holdning jeg har set stort set alle steder det er diskuteret" - men derfor behøver det
jo ikke være korrekt... ;)

Står det på www.php.net eller www.zend.com så er det en anden sag.
Ellers må det regnes til almindelig, gammeldags overtro.
Avatar billede tangveje Nybegynder
19. februar 2003 - 01:09 #14
Nej, derfor behøver det ikke være sandt, og så længe det er ganske svært at bevise den slags må det nok forblive et valg om man vil tro på det eller ej :)

Jeg tog mig dog den frihed at lave en simpel og hurtig lille test, som nok ikke skal tages som et 100% perfekt svar eller noget... Jeg brugte denne kode :

<div style="display : none ;">

<?php
  function getmicrotime( ) {
    list( $usec, $sec ) = explode( " ", microtime( ) ) ;
    return ( (float)$usec + (float)$sec ) ;
  }

  $start = getmicrotime() ;

  for ( $i = 0 ; $i < 1000 ; $i++ ) {
    echo "65535 A'er her" ;
  }

  $end = getmicrotime() ;
  $time = $end - $start ;

  echo '</div>' . $time ;
?>

Den udskriver så 65535 * 1000 (altså 65535000) A'er i et skjult lag (gad ikke se på alle de A'er :) og udskriver antallet af sekunder den var om det. Det kørte jeg 10 gange efter hinanden, lagde de 10 tal sammen og dividerede med 10 for at få gennemsnittet. Jeg gjorde så præcist det samme forfra men med denne linie istedet

echo '65535 A'er her' ;

Jeg fik følgende resultat ialt :

Med "  : 0.90551030635834
Med '  : 0.84326139688492
Forskel : 0.06224890947342

Selvfølgelig, hvis man gjorde dette igen ville man få et andet tal, og jo flere gange man gør det jo flere forskellige tal vil man få. Og selvfølgelig kan det gøres mere utvetydigt, men jeg gad ikke bruge hele natten på det, og tror nu det holder nogenlunde, men det er jo som sagt et frit valg om man vil tro på det eller ej, så længe intet er bevist med sikkerhed :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester