ugrás a tartalomhoz

Karaktersorozatban tömbelem helyettesítés PHP-vel

breakline · 2006. Már. 9. (Cs), 00.22
Sziasztok!

Felmerült egy probléma, bár olvastam az egyszeres(') és a "rendes" (") idézőjelek közit különbségekről, sőt úgy tudom a php értelmezi az egymásba ágyazott idézőjeleket, én mégis hibaüzenetet kapok a következőre:
<?php
$tomb=mysql_fetch_array($eredmenyem);
// és például ha így használom:
echo "<td>$tomb['ORSZAG']</td>";
// Na ekkor hibaüzenetet kapok.
// Ezért én úgy alkalmazom ehelyett, hogy
// kírás előtt beteszem egy változóba:
$orszag=$tomb['ORSZAG'];
echo "<td>$orszag<td>";
Mivel elég nagy munkában vagyok, jelentős időt takarítanék meg ha ezzel nem kellen foglalkoznom (mármint hogy külön változóba teszem), tudtok esetleg segíteni?

köszönöm előre is
breakline
 
1

<Nincs cím>

mefi · 2006. Már. 9. (Cs), 00.36
Szia,

A megoldás, hogy ideiglenesen kilépsz az idézőjelből. Érdekes, hogy a dupla idézőjelnél, nincs hiba, ha az idézőjelen belül írsz változót, de a szimpla idézőjelben nem dolgozza fel.

<?php
echo('<td>Az eredmény: $tomb['orszag']'</td>');
// Az eredmény: hiba, hiszen kilép az idézőjelből és az „orszag” szót akarja feldolgozni.

echo('<td>Az eredmény:'.$tomb['orszag'].'</td>');
// Az eredmény: a kapott eredmény

echo("<td>Az eredmény:".$tomb['orszag']."</td>");
echo("<td>Az eredmény: $tomb['orszag'] "</td>");
// Az eredmény: a kapott eredmény
?>
Bár a legutolsó példa működik, nem a legszebb megoldás, így ajánlott kilépni az idézőjelekből. Érdekesség még, hogy (elenyésző mértékben) gyorsabb a szimpla idézőjel, mint a dupla.

üdv
mefi
http://mefi.be
2

PHP motor miatt van

sayusi · 2006. Már. 9. (Cs), 00.50
A megoldás, hogy ideiglenesen kilépsz az idézőjelből. Érdekes, hogy a dupla idézőjelnél, nincs hiba, ha az idézőjelen belül írsz változót, de a szimpla idézőjelben nem dolgozza fel.


Ha jól tudom ez azért van, mert a dupla idézőjelnél a motor megnézi, hogy van-e az idézőjelek közti részben változó, a szimpla idézőjelek esetében pedig nem.
Ebből adódik a gyorsaságbéli különbség is.

Ami szvsz a legtisztább megoldás: (mert ezt szoktam meg :D )

echoo "<td>" . $valtozo . "</td>";
Bízzál Istenben és tartsd szárazon a puskaport!" -Cromwell
3

-

breakline · 2006. Már. 9. (Cs), 00.59
köszönöm, eszembe juthatott volna... :D
4

Kapcsos zárójel

Anonymous · 2006. Már. 9. (Cs), 05.59
Tapasztalatom szerint tömbelem kiírásánál működik ez a forma is:
echo "<td>{$tomb['ORSZAG']}</td>";
5

nem kell idézőjel...

Anonymous · 2006. Már. 9. (Cs), 08.49
a legegyszerűbb megoldás, ha az idézőjelek között egyáltalán nem használsz idézőjelet:

<?php
echo "<td>$tomb[ORSZAG]</td>";
?>
ezt a jobb szerkesztők (pl: context) még színezni is tudják, a gyengébbek csak a $tomb változót fogják (az [ORSZAG]-ot már nem).

gex
6

<Nincs cím>

Anonymous · 2006. Már. 9. (Cs), 10.03
Ez nem megfelelő. Mar sokszor volt rola szo. Nezz utana
7

<Nincs cím>

Joó Ádám · 2006. Már. 9. (Cs), 22.23
Pedig én is így használom

Adott a tömbünk, benne a változóval: $_POST['password']

print 'Ez itt sztring' . $_POST['password'] . 'ez is sztring';
vagy
print "Ez itt sztring $_POST[password] ez is szting";
Hmmm?
8

Man

attlad · 2006. Már. 9. (Cs), 23.33
Why is $foo[bar] wrong?
http://www.php.net/manual/en/language.types.array.php#language.types.array.foo-bar
9

működik, de

Hojtsy Gábor · 2006. Már. 9. (Cs), 23.34
Az, hogy működik még nem azt jelenti, hogy erre kellene oktatni a népet. A {} közötti változóhelyettesítés nagyon jól működik és okosabb (ugyanazt a formát használod, amit karaktersorozatokon kívül megszoktál), mint ahogy már írták.
10

nekem kellett volna reagálnom...

Anonymous · 2006. Már. 10. (P), 10.33
...mert én vetettem fel a rossz megoldást.
a 6-os hozzászólás után rákerestem php.net-en a dologra, és meg is találtam a később belinkelt oldalt. én is a kapcsos zárójeleket használom már. pont időben jött ez a téma, mert csak nemrég próbálkoztam ezzel a tömbelem a sztringben problémával, és magamtól erre a megoldásra jutottam sajnos.

gex