Newsgroup: it.comp.www.php
Titolo: problema stupido di sintassi...

Ciao, dalla richiesta che sto per fare capirete che sono abbastanza novizio,
ma è una cosa che ci smanetto da una mezz'ora e non ne vengo fuori
echo $IW->DB_Result($result,$i,"description");
Come devo modificare questa stringa affinchè l'output sia entro i tag
<p></p>?
è mezzora che ci sto perdendo à capa
graziegraziegrazie


ciao,
echo '<p>'.$IW->DB_Result($result,$i,"description").'</p>';
L'operatore "." (punto) viene utilizzato per la concatenazione di 
stringhe con altre stringhe o altri tipi di dato (php effettua 
automaticamente la conversione a stringa in caso di operatore ".")
ciao

 ciao
Meglio se usi le doppie virgolette

Cillo wrote:

echo "<p>".$IW->DB_Result($result,$i,"description")."</p>";
-- 
kain
kuht.it

 Meglio se usi le doppie virgolette
Di grazie perche' mai?
-- 
I am what I am, I do what I can
L'uomo, conscio di sbagliare, persevera.

 
ho sentito dire in giorno (ma è un falso, falsissimo mito) che i singoli
apici velocizzano il codice.. speriamo che non sia per questo motivo ;P
-- 
kain
kuht.it

 singoli apici velocizzano il codice.. 
Perche' secondo te sarebbe un falso mito? Il motore Zend non effettua
il parsing delle stringhe contenuto nei singoli apici mentre lo fa se
ci sono i doppi apici per cui sono piu' performanti i songoli apici,
poi che sia un incremento minimo questo non va su quello.


 
quello che ho riportato sono solo voci che ho sentito per la rete; non
conosco nel dettaglio il motore zend, quindi mi fido di ciò che dici e mi
informerò meglio.
-- 
kain
kuht.it

 automaticamente la conversione a stringa in caso di operatore ".")
Ti ringrazio.
Come immaginavo il mio era soprattutto un errore di distrazione, visto che
non avevo messo il secondo punto, per finire nella disperazione annaspando
per tentativi!
Thanks again

 
Hai ragione però, per completare le informazioni aggiungo un paio di cose.
In realtà viene effettuato il parsing anche delle stringhe a singolo 
apice ('  ').
Infatti se provi un echo su 'ciao\\nciao' il doppio \\ verrà sostituito 
con il singolo \ (PHP 4.3.8 su WinXP).
Comunque, giusto per dare dei numeri, se consultiamo questi benckmark
http://www.php.lt/benchmark/phpbench.php
vedremo che la differenza è quasi irrilevante, tranne in un particolare 
caso.
Spero di essere stato utile.
Ciao.
Roberto Rossi
Web   : 
http://rsoftware.altervista.org

"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:gFo_c.82781$OH4.2...@twister1.libero.it...

Secondo me è un errore concettuale, i singoli di solito si usano coi
caratteri, non con le stringhe

 sostituito con il singolo \ (PHP 4.3.8 su WinXP).
Tra escaping e parsing c'e' una bella differenza.


 caratteri, non con le stringhe
Strano, il manuale ufficiale non sembra molto d'accordo ...
[quoto 
http://www.php.net/manual/en/language.types.string.php#AEN2697
]
The easiest way to specify a simple string is to enclose it in single
quotes (the character ').
[cut]
echo 'this is a simple string'
[/quoto]


  
Ok. Chiamalo come vuoi.
Resta il fatto che, guardando i numeri, evidentemente, anche per le 
stringhe '  ' qualcosa viene fatto. Altrimenti non si spiega questa 
somiglianza dal punto di vista prestazionale.


"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:V6q_c.82903$OH4.2...@twister1.libero.it...

Ma se inserisci una variabile tra singoli apici che succede?
Non la interpreta, ti scrive $nome_var

 Ok. Chiamalo come vuoi.
Non e' una questione di come lo chiamo io, sono cose diverse.
<?php
$test = 'hello world';
$pippo = '$test pippo';
$pluto = "$test pluto";
print ($pippo);
print ('<br />');
print ($pluto);
?>


 Non la interpreta, ti scrive $nome_var
Non ci vedo nulla di nuovo, e' specificato nella stessa pagina a cui ho
fatto riferimento nel precedente post.


"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:Stq_c.82925$OH4.2...@twister1.libero.it...

Quindi meglio usare i doppi.
Ciao

 Quindi meglio usare i doppi.
Ah, Ah, Ah.


 
Ora, mi sta bene che ti piaccia fare il professore. ( purtroppo la 
domenica mattina non gradisco lezioni superficiali ed inutili)
Prima di tutto parliamo di prestazioni.
Sai che la creazione di una stringa di 2800 caratteri usanto i singoli 
apici ha le stesse prestazioni usando gli apici doppi ?
Sai che l'unico caso in cui le stringhe a doppio apice sono nettamente 
più lente di quelle a singolo apice è quanto utilizzo al loro interno 
delle variabili e in genere il caratte $ ?
Cosa si può deduci da tutto ciò ?
Si potrebbe deduce che, in ogni caso, PHP analizza entrambe i tipi di 
stringa alla ricerca di $, dopo di che, se ne trova, solo per le 
stringhe a doppio apice provvede al parsing completo.
Infine una domanda. Perchè non inserisci nelle risposte che mi dai 
qualcosa di più utile, invece di queste pillole di saggezza (che non mi 
servono a nulla) ?
Faccio un esempio.
PARSING
Generalmente ll parsing consiste nel prendere una frase e nel 
trasformarla, in base alla sua sintassi. in qualcosa d'altro. Potrebbe 
essere trasformata in una serie di comandi riconoscibili dal programma o 
dal linguaggio di programmazione di alto livello che si sta utilizzando, 
oppure, più semplicemente potrebbe essere trasformata in una frase 
diversa (il nostro caso).
Nel caso del PHP, solo per le stringhe a doppio apice, vengono 
sostituiti i nomi di variabile con il loro contenuto. Anche se, 
analizzando le prestazione, SEMBRA che un controllo sulla presenza dei 
caratteri $ venga eseguito anche sulle stringhe ad apice singolo.
ESCAPING
L'escaping consiste nel preporre ad un carattere il simbolo di backslash 
"\", la sequenza così ottenuta assume un significato particolare quand'è 
usata nelle stringhe (ad es. "\t" corrisponde al carattere di tabulazione).
Utilizzando le stringe ad apice singolo in PHP, l'escaping NON è completo.
Infatti molte coppie non vengono interpretate.
Per esempio, non vengono interpretati \n e \r mentre lo sono \' e \\. 
(PHP 4.3.8)
Al contrario, nelle stringhe ad apice doppio, l'escaping è completo. 
(PHP 4.3.8)
Ciao.
Roberto Rossi
Web   : 
http://rsoftware.altervista.org
EMail  : 
rsof...@altervista.org

 completo.
Anche il manuale lo dice ...


 
Buon giorno.
Ripensa un attimo.
Ho due stringhe.
Una con gli apici singoli e una con i doppi apici.
Con lo stesso contenuto.
Secondo quanto dici, sulla prima PHP non fa nulla.
Sulla seconda PHP effettua la ricerca di $.
Secondo te è normale che abbiano le stesse prestazioni?
Interessante.


 Secondo te è normale che abbiano le stesse prestazioni?
Stesso contenuto, prestazioni diverse:
$tmp[] = "aa $ aaaa $ aaaa $ a"; // + 180 %
$tmp[] = 'aa $ aaaa $ aaaa $ a'; // + 114 %
idem
$tmp[] = "aaaaaaaaaaaaaaaaaaaa"; // + 110 %
$tmp[] = 'aaaaaaaaaaaaaaaaaaaa'; // + 114 %
idem
$tmp[] = ""; // +  103 %
$tmp[] = ''; // +  100 %
"Interessante."


 
Ma non ci arrivi o fai finta ?
Vediamo se cosě č meglio.
Prendi due stringhe.
Una con gli apici singoli e una con i doppi apici.
Con lo stesso contenuto, SENZA $.
Secondo quanto dici, sulla prima PHP non fa nulla ('aaaaaaa').
Sulla seconda PHP effettua la ricerca di $ ('aaaaaaa').
 > $tmp[] = "aaaaaaaaaaaaaaaaaaaa"; // + 110 %
 > $tmp[] = 'aaaaaaaaaaaaaaaaaaaa'; // + 114 %
Secondo te č normale che abbiano prestazioni simili e che la stringa a 
singoli apici sia piů lenta ?
Se, come dici, sulla stringa a singoli apici non viene effettuata alcuna 
operazione, non dovrebbe essere piů veloce ?
Comunque sia. Visto che č mezzogiorno vado a mangiare.
Buona giornata e Buon appetito. :)


 alcuna operazione, non dovrebbe essere più veloce ?
Ti consiglio di fare piu' volte il refresh della pagina con i benchmark.
Ora, ad esempio vengono visualizzati questi valori:
$tmp[] = ''; // +  100 %
$tmp[] = ""; // +  110 %
$tmp[] = 'aaaaaaaaaaaaaaaaaaaa'; // +  113 %
$tmp[] = "aaaaaaaaaaaaaaaaaaaa"; // +  115 %
$tmp[] = 'aa $ aaaa $ aaaa $ a'; // +  125 %
$tmp[] = "aa $ aaaa $ aaaa $ a"; // +  181 %
I valori vengono ricalcolati ogni volta, ma rimane una costante, c'e'
differenza tra apici singoli ed apici doppi.


> Ti consiglio di fare piu' volte il refresh della pagina con i benchmark.
E un manuale di statistica per te.
Proprio come dice la pagina fai più volte il refresh perche prestazioni
simili potrebbero essere imputate a fattori concomitanti in fase di run time
e solo il valore medio assume significato, per un numero abbstanza grande di
prove. Inoltre il valore medio è solo indicativo non è mai la realtà quando
i fattori concomitanti non sono controllabili, come in questo caso.

Setec Astronomy ha scritto:

Ma sei veramente senza vergogna.
$tmp[] = 'aaaaaaaaaaaaaaaaaaaa'; // +  113 %
$tmp[] = "aaaaaaaaaaaaaaaaaaaa"; // +  115 %
oppure
$tmp[] = "aaaaaaaaaaaaaaaaaaaa"; // + 110 %
$tmp[] = 'aaaaaaaaaaaaaaaaaaaa'; // + 114 %
Ma cosa ti cambia?
E' talmente evidente che questi due tipi di stringa (senza $ nella 
stringa) vengano trattati allo stesso modo.
C'è differenza tra apici singoli e doppi solo in presenza di $.
Comunque. Come ti ho già scritto. Hai ragione Proff...


 C'è differenza tra apici singoli e doppi solo in presenza di $.
Se ne sei proprio convinto ti consiglio di non andare a leggerti il
Zend/zend_language_scanner.l e relativo Zend/zend_language_scanner.c
dove viene implementato l'interprete dei due tipi di stinghe.
Da un punto di vista quantitativo l'implementazione dell'interprete per
l'escaping delle stringhe double quotes si attesta sulle 88 righe
mentre quello delle stringhe single quote si attesta su 46 righe.
 
Da un punto di vista qualitativo si tratta di due diversi parser per
cui i due tipi di stringhe vengono gestiti ed analizzati in modi
diversi, inoltre esistono delle regole di interpretazione relative al
carattere $ SOLO per in relazione alla double quotes (vedi
ST_DOUBLE_QUOTES).


 
Comunque Bravo.
Finalmente una risposta decente.
Adesso si che mi piaci. Vedi che se ti impegni ce la fai a dirmi cose 
interessanti.
Bene. Visto che ti sei spulciato tutto questo popò di codice sorgente, 
perchè non fai uno sforzo in più e mi dici come mai queste stringhe 
ST_SINGLE_QUOTES hanno le medesime prestazioni di quelle ST_DOUBLE_QUOTES ?
Così almeno mi togli questa curiosità.
Perchè vedi, a me rimangono sempre queste stringhe 'aaaaaaaaaaaaa' e 
"aaaaaaaaaaaaa" e aggiungerei anche 'aa $ aaaa $ aaaa $ a', che hanno 
tutte le stesse prestazioni.
Giusto per chiarire, vorrei dirti che non mi puoi tenermi lezioni senza 
fornire argomenti reali sui quali discutere.
Le mie constatazioni e ipotesi si basano su ragionamenti logici, non 
sulla differenza tra 'parsing' e 'escaping' o su quanto riportato sul 
manuale (che evidentemente consideri una bibbia).
Non so se veramente gli algoritmi usati per l'interpretazione delle 
stringhe ST_SINGLE_QUOTES e ST_DOUBLE_QUOTES siano diversi o siano 
uguali e non ho nessuna intenzione di perdere tempo andando a spulciarmi 
i sorgenti. Mi fido di quanto dici.
In ogni caso tutta la questione di cui discutiamo la riassumo così :
* Le stringhe SINGLE_QUOTES hanno le medesime prestazione delle 
DOUBLE_QUOTES, se all'interno di entrambe non sono presenti "$";
* Le stringhe SINGLE_QUOTES hanno le medesime prestazione delle 
DOUBLE_QUOTES, se all'interno delle seconde sono presenti "\$";
* Le stringhe SINGLE_QUOTES hanno prestazione molto migliori delle 
DOUBLE_QUOTES, se all'interno di queste ultime sono presenti "$" (non "\$");
Spero che almeno su questo tu concordi, perchè altrimenti non abbiamo 
speranza di capirci.


 "\$");
Concordo, per il resto quando avro' tempo approfondiro'.



:Provate a guardare gli ingredienti del famoso Labello che si usa per
:le labbra screpolate: Butirrospermum Parkii (sperma di maiale).

Non la interpreta, ti scrive $nome_var
E cosi' ti accorgi subito di esserti sbagliato :-)
Gente, abbiamo davanti DUE strumenti *diversi* che servono a fare
cose *diverse*.
E' vero che con un cacciavite a lama del 5 ci s'avvitano anche le
viti a croce del 7 - ma di qui a dire che sia meglio usare solo i
cacciaviti a lama...
