Newsgroup: it.comp.www.php
Titolo: condizione che influisce su un altra

if($pippo=1){
         if($poppi =1){
                  echo "link1";
        }else{
                 echo "link2";
       }
}else{
         if($poppi =1){
                  echo "link3";
        }else{
                 echo "link4";
       }
}
esiste un altro metodo migliore di scrivere sta cosa ?

Gufo Rosso ha scritto:

Non credo... :(
Anch'io ho un paio di script che usano questo codice... tornerebbe
comodo anche a me... :P
Una cosa potrebbe essere...
echo ($pippo==1) ? (($poppi==1) ? "link1" : "link2") : (($poppi==1) ?
"link3" : "link4");
ma la logica è uguale a quella dell'if (solo che viene usata la forma
(condizione) ? se_vero : se_falso).
Ovvio che non ti serve questa... :P
David
P.S.: occhio ad usare "==" anziché "=" nelle condizioni... ;)
-- 
Linux Registered User #334216
Get FireFox! >> 
http://www.spreadfirefox.com/?q=affiliates&id=48183&t=1
Staff >> 
http://www.debianizzati.org
 <<

 ha scritto nel messaggio
news:kgAwg.49896$_J1.5...@twister2.libero.it...


 ha scritto nel messaggio

se migliore intendi piů elegante, č un'anticchia piů elegante cosě:
if($pippo==1) {
    echo ($poppi==1)? "link1" : "link2";
}
else {
    echo ($poppi==1)? "link3" : "link4";
}
o tutto in una riga
echo ($pippo==1)? (($poppi==1)? "link1" : "link2") : (($poppi==1)? "link3" : 
"link4");
ma quest'ultimo caso č poco charo e immediato, tuttavia utile se lo devi 
ripetere piů volte.
Non mi vengono in mente altri modi.
ciao,
Luca(riello) 


Una cosa....non $pippo=1, ma $pippo==1, o come consigliava non ricordo chi: 
1==$pippo (in questo modo eviti accidentali errori di battitura).
Perché...cosa ha di brutto? Non ti piacciono le condizioni annidate? Alla 
fine, in questo esempio, si scende solo di due livelli!! :-) In effetti nei 
due rami degli if viene fatto il controllo sulla stessa variabile $poppi, ma 
alla fine, in ogni script, ne verrà eseguita solo una di condizione, quindi, 
non è che ci sia niente di "lento".
Al massimo, se voi mantenere tutto su un livello, ma non è un modo migliore, 
anzi, forse più palloso perché devi gestirti a mano tutte le combinazioni:
if($pippo==1 && $poppi==1) echo "link1";
else if($pippo==1 && $poppi!=1) echo "link2";
else if($pippo!=1 && $poppi==1) echo "link3";
else if($pippo!=1 && $poppi!=1) echo "link4"; //oppure semplicemente else 
echo "link4";
Oppure, devi scambiare la priorità di $poppi con $pippo, ma non cambia 
nulla. :-)
Oppure, una cosa che mi viene in mente, ma dice la stessissima cosa, allo 
stesso modo, è con l'uso dell'operatore '?':
$pippo==1 ? ($poppi==1 ? echo "link1"; : echo "link2" ) : ($poppi==1 ? echo 
"link3"; : echo "link4" ) ;
Non la ho provata a dir la verità...ma l'idea c'è. :-p
ciaoo,
rob4you
www.outofmind.eu
 

 }
come si dice di solito..
there's more than one way to do it..
e questa IMHO e' carina..
switch ($pippo + 2 * $poppi) {
  case 0: echo 'link4'; break;
  case 1: echo 'link2'; break;
  case 2: echo 'link3'; break;
  case 3: echo 'link1';
}
-- 
www.iuz-lab.info

 }
Sarà pure carina, ma è sbagliata...
L'"else", infatti, non implica che $pippo/$poppi sia == 0, condizione
necessaria affinché il tuo snippet funzioni (in teoria).
Basta aggiungere, subito prima di questo codice:
$pippo = ($pippo == 1) ? 1 : 0;
$poppi = ($poppi == 1) ? 1 : 0;
Questo, ovviamente, se i valori di $pippo e/o $poppi non servono...
altrimenti su utilizzano delle variabili "temporanee"... tipo le $i / $k
/ $j utilizzate per i contatori/cicli.
David


 if($pippo=0) and ($poppi =0) { echo "link4";}
A me sembrava piů chiaro il codice originale..
A essere pignoli, con questa soluzione php deve controllare 4 condizioni,
mentre l'altra soluzione ne deve controlalre solo 2..
carlo.



$pippo = $poppi = 1; echo 'link1';
:-)
Seriamente, dipende da cosa ti interessa. Se pippo e poppi possono variare
molto nel futuro, magari e' piu' mantenibile una cosa che possa diventare
switch ($pippo)
{
	case 1:
		switch($poppi)
		{
			case 1: $link = 'link1'; break;
			case 2: $link = 'link5'; break;
			default:$link = 'link2'; break;
		}
		break;
	default:
		switch($poppi)
		{
			case 1: $link = 'link3'; break;
			default:$link = 'link4'; break;
		}
}
echo $link;
Se no potresti perfino pensare a qualcosa come
$links	= array(
	'1,1'	=> 'link1',
	'*,1'	=> 'link2',
	'*,*'	=> 'link99'
);
e poi percorrere tutto l'array. Meno efficiente ma tieni tutti i link in
un solo posto, e si adatta bene se mai ti ritrovi 500 link e decidi che,
forse, e' meglio usare un database :-)
Leonardo
-- 
Dawn is near, the time is short (Human aircraft! Hard to port!)
We eight reindeers of the night work as one in silent flight.
Let not one damn house pass by (Who taught that guy how to fly?)
Each year sees more girls and boys: how many of them can we bring toys?