webForumDet fria alternativet

kodeffektivisera, echo-problem

PHPur PHP

14 svar · 431 visningar · startad av herq

Medlem sedan aug. 2000238 inlägg
Frågan#1

jag försöker korta ner dessa _tre_ (fungerande) rader...

echo "<a href=\"?page=1";
echo $searchquery ? '&searchquery=' . $searchquery: '';
echo "\">1</a>";

...till _en_ (för närvarande icke fungerande) rad...

echo "<a href=\"?page=1" . $searchquery ? '&searchquery=' . $searchquery: '' . "\">1</a>";

_en_-raden skriver bara ut:
&searchquery=XXXXXX

medan de _tre_-raderna skriver ut:
<a href="?page=1&searchquery=XXXXXX">1</a>

ovanstående resultat önskas, fast med _en _-raden metoden.

förstår ni?
hjälp mig.

jag blir inte mkt klokare, än vad jag redan är, av http://www.php.net/echo

Medlem sedan dec. 2003244 inlägg
#2

testa följande:

echo ("
<ahref=\"page=$prev" .$searchquery ? '&searchquery=' .$searchquery: '' . "\">$page</a>
");

Medlem sedan dec. 2003244 inlägg
#3

så borde det se ut om jag förstått dig rätt =)

Medlem sedan aug. 2000238 inlägg
#4

nä funkar inte.

är ju _exakt_ samma exempel som som min en-radare, bara lite fulare. :) ;)

Medlem sedan aug. 20002 975 inlägg
#5

Din mittersta rad är en if-sats i kortform, och den tror jag inte du kan slänga in rakt upp och ner i en echo.

Vill du ha det på en rad så får du nog göra så här:

echo !empty($searchquery) ? "<a href=\"?page=1&searchquery=$searchquery\">1</a>" : "<a href=\"?page=1\">1</a>";

Eller på två rader:

$searchquery = !empty($searchquery) ? '&searchquery=' . $searchquery : '';
echo "<a href=\"?page=1$searchquery\">1</a>";
Medlem sedan maj 2002647 inlägg
#6

eller:

echo "<a href=\\"?page=1&searchquery=".$searchquery."\\">1</a>";
Medlem sedan aug. 2000238 inlägg
#7

matte>> men jag VILL att det ska gå o "slänga in rakt upp och ner", VARFÖR GÅR INTE DET, det borde det göra.

webslave>> jo visst, det funkar, har gjort så, med det är för enkelt, o det är ju inte som jag vill att det ska funka, heh, äsch, jag får väl finna mig i det då.

tack allihopa.

Medlem sedan aug. 20002 975 inlägg
#8

Anledningen till att det inte går är att du har följande kod, skrivet på ett annat sätt:

echo "<a href=\"?page=1";
if ($searchquery) {
   echo '&searchquery=' . $searchquery;
} else {
   echo '';
}
echo "\">1</a>";
Medlem sedan aug. 2000238 inlägg
#9

matte>> ja vet, det var så det såg ut från början, men det är ju liksom hela 7(!) rader, o det går ju inte för sig. :)

ok, anledningen till varför jag tycker att det _borde_ fungera.
enl http://www.php.net/echo
så funkar ju följande alldeles ypperligt:

echo $some_var ? 'true': 'false';

o det är ju liksom en _if()_ "innästlat" i en _echo"";_

så delvis går det ju att "slänga in rakt upp och ner"

o att då få in lite text innan o efter tycker jag inte ska vara så svårt.

följande fungerar ju exempelvis ypperligt även det:
echo "blaha text" . date("U") . "blaha text";

eller tycker ni att jag är helt ute o cyklar med det här resonemanget?

Medlem sedan aug. 20002 975 inlägg
#10

Jag förstår hur du tänker, men syntaxen är:

(sant/falskt) ? (om sant) : (om falskt);

Lägger du till något före så blir det istället:

(kod_före_sant/falskt) ? (om sant) : (om falskt_kod_efter);

Och det första uttrycket ger parse error.

Vill du köra med den syntaxen så blir det som jag skrev tidigare:

echo !empty($searchquery) ? "<a href=\"?page=1&searchquery=$searchquery\">1</a>" : "<a href=\"?page=1\">1</a>";
Medlem sedan dec. 2003153 inlägg
#11

Men (1)

echo $some_var ? 'true' : 'false';

är inte samma som (2)

echo "<a href=\"?page=1" . $searchquery ? '&searchquery=' . $searchquery : '' . "\">1</a>";

eftersom i (2) är variabeln $some_var = "<a href=\"?page=1" . $searchquery.

Borde du inte skriva nåt i stil med

echo "<a href=\"?page=1" . ( $searchquery ? '&searchquery=' . $searchquery : '' ) . "\">1</a>";

om nu PHP accepterar parenteserna så som de är tänkta.

Tänk bara på att främst behålla läsbarheten i koden, inte bara minska antalet rader.

Medlem sedan aug. 2000238 inlägg
#12

lunne82>> jjaaaaaa!!! ditt sista kodexempel, det var precis det jag menade och var ute efter. det funkar alltså. tack. vad bra. nu kan jag sova lugnt.
dessa förbannade parenteser.

fast nu har jag redan löst det på ett annat mindre estetiskt men ändock bättre rent processor/prestandamässigt sätt.

/red
fresten tycker jag att _en_ rad bidrar enormt mkt mer till en lättlästare (kan man komparera 'lättläst' till superlativ?) kod än vad _sju_ rader gör ;) :e

Medlem sedan dec. 2003153 inlägg
#13

fresten tycker jag att _en_ rad bidrar enormt mkt mer till en lättlästare (kan man komparera 'lättläst' till superlativ?) kod än vad _sju_ rader gör

"fresten tycker jag att _en_ rad bidrar till enormt mkt mer lättläst kod än vad _sju_ rader gör"
tror jag det blir. :)

Medlem sedan aug. 2000238 inlägg
#14

men min superlativ'a version skulle bli: _lättlästast_.
ok, kanske inte _mest lättläst_ :e, men helt klart coolast, låter lite som 'sex laxar i en laxask'.

Medlem sedan maj 2002647 inlägg
#15

herq:
Hehe... jag missuppfattade dig helt och hållet... typpiskt mig.

139 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)