WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   PHP include, print, echo (https://www.wn.se/forum/showthread.php?t=19419)

sAe 2007-02-19 17:45

Citat:

Ursprungligen postat av hnn
Citat:

Ursprungligen postat av MattiasA
Men detta fungerar väl inte?
echo "hej, $_GET['name']!";



Det funkar utmärkt

Akta dig dock för att göra så i tex. mysql querys. PHP kommer ge dig felmeddelanden ifall du gör det.

Kör antingen mysql_query("UPDATE table SET ID = '$_GET[ID]'); (inga enkelfnuttar runt ID)
eller mysql_query("UPDATE table SET ID = '"$_GET[ID]."' WHERE username = 'blabla'");

Observera att det sista exemplets fnuttar ser ut såhär ' " . $variable . " ' (utan massa mellanrum dvs :))

Sigurd 2007-02-19 17:55

Detta hör egentligen inte till tråden men ett litet tips kommer här:

Kod:

$foo = mysql_query( sprintf("INSERT INTO tbl (id, field) VALUES (%d, '%s')", $id, $field) );
Lättare att hålla kolla på vad man matar in... ;)

Filip 2007-02-19 23:56

Citat:

Originally posted by hnn@Feb 17 2007, 21:42
Du kan dessutom använda följande med echo...
Kod:

echo hej , username ,
istället för
Kod:

echo hej . username .
Det snabbar upp sidan lite också

Varför är kommatecken bättre än punkt? Eller är där någon annan skillnad som jag missar?

Seattlegrunge 2007-02-20 01:29

Samma här.. kommatecken istället för punkt... inte sett tidigare, men samtidigt, vad är det som gär det lite snabbare? Är det nu så tycker man ju att alla exempel i böcker och på nätet borde köra med kommatecken.

Du Filip... tjusig "broken" avatar du har ;)

Sigurd 2007-02-20 09:39

Skillnaden mellan att dela upp strängen (t.ex.) med , istället för . vid användning av "funktionen" echo är:

PHP måste läsa ut och exekvera hela raden innan den kan "retuneras" när man använder . Om man däremot använder, så skriver PHP ut det så fort den är klar med "varje" del och därmed krävs det mindre minne av servern.

Kod:

echo "del1", "del2", $del3, "del4";

Magnus_A 2007-02-20 10:03

Citat:

Originally posted by MattiasA@Feb 19 2007, 18:06
Men detta fungerar väl inte?
echo "hej, $_GET['name']!"

Nej, det fungerar inte.
Skriv så här istället:
echo "hej, {$_GET['name']}!";
Klamrarna gör att PHP kan komma åt ett värde ur en matris med sträng-index, eller som manualen uttrycker det:
"As in Perl, you can access a value from the array inside double quotes. However, with PHP you'll need to enclose your array between curly braces."
Inga mellanslag mellan klammer och variabel!

gjohansson 2007-02-23 12:11

Jag har hört att

Kod:

hej <?=$username?> !!!
är både snabbare(??) och mer dreamweaver/designer -vänligt än:

Kod:

<?echo "hej $username !!!";?>
B)

Sigurd 2007-02-23 12:14

Citat:

Originally posted by gjohansson@Feb 23 2007, 13:11
Jag har hört att
Kod:

hej ?=username?
är både snabbare(??) och mer dreamweaver/designer -vänligt än:
Kod:

?echo hej username;?

Snabbare än <?php echo $foo; ?> är det inte. Snabbare att skriva möjligtvis.

Det är dessutom inte framtidsvänligt i och med att PHP5 har shorttags OFF som standard.

gjohansson 2007-02-28 17:05

Citat:

Originally posted by Sigurd@Feb 23 2007, 13:14
Snabbare än <?php echo $foo; ?> är det inte. Snabbare att skriva möjligtvis.

Det är dessutom inte framtidsvänligt i och med att PHP5 har shorttags OFF som standard.

Öh? Jo, det ÄR snabbare, du har givetvis genomfört empiriska tester som bevisar ditt uttalande?

Jag var tvungen att göra detta för jag blev lite nyfiken... ;)

"inline-metoden"
Kod:

<?$username="test";$time_start = microtime(true);
for($i=0;$i<1000000;$i++){?>hej <?=$i?> <?=$username?> !!!<?}
$time_end = microtime(true);
?><?=($time_end - $time_start)?>

"echo-metoden"
Kod:

<?$username="test";$time_start = microtime(true);
for($i=0;$i<1000000;$i++){?><?echo "hej $i $username !!!";?><?}
$time_end = microtime(true);
?><?=($time_end - $time_start)?>

Sen är det bara att köra dessa två kod-snuttar i varsin php-fil och se resultatet.

I alla mina tester så var "inline-metoden" snabbare än "echo-metoden" med ungefär 0.5 sek på min test-server, INGEN gång var förhållandet det omvända. Sen om du vill lägga dit <?php istället för <? - lär ju inte spela någon som helst roll.

Inte för att jag tror att resultatet spelar nån som helst roll för en praktisk php-applikation men som princip kan det vara bra att ha belägg för sina påståenden... :lol:


Alla tider är GMT +2. Klockan är nu 01:52.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson