risultati booleani

  • Creatore Discussione Creatore Discussione isoman
  • Data di inizio Data di inizio

isoman

Nuovo Utente
4 Nov 2011
13
0
0
Ciao a tutti, sono un nuovo apprendista php e sto studiando su un libro.

Volevo capire perchè nel risultato di questo codice mi dice che il gatto è vero quando il gatto è falso?

<?php
$cane = TRUE;
$gatto = FALSE;
if
($gatto = FALSE)
{
echo "il gatto è falso";
}
else
{
echo "il gatto è vero";
}
?>
 
Ciao, non sono ferrata in php ma

il segno = è un operatore di assegnazione

il segno == di comparazione

Codice:
<?php
$cane = TRUE;
$gatto = FALSE;
if
($gatto == FALSE)
{
echo "il gatto è falso";
}
else
{
echo "il gatto è vero";
}
?>


Codice:
<?php
$cane = true;
$gatto = false;
echo $cane == $gatto ? "il gatto è vero\n" : "il gatto è falso\n";
?>


http://php.net/manual/en/language.operators.comparison.php



Valeria.
 
Ultima modifica:
ciao
quando si usano valori di tipo diverso è sempre meglio confrontare anche il tipo ===
PHP:
($gatto === FALSE)
{
echo "il gatto è falso";
}
else
{
echo "il gatto è vero";
}
si vale2
 
Ultima modifica:
ciao
quando si usano valori di tipo diverso è sempre meglio confrontare anche il tipo ===
PHP:
($gatto === FALSE)
{
echo "il gatto è falso";
}
else
{
echo "il gatto è vero";
}
si vale2

grazie amici :)

in quanto tempo si potrebbe iniziare a produrre siti web dinamici ed e-commerce nel mio caso?

il mio caso: conosco in modo scarso la programmazione e sto imparando ora il PHP e MYSQL con il libro di Mark Wandschneider (sviluppare applicazioni web con PHP e MYSQL).
 
ciao
quando si usano valori di tipo diverso è sempre meglio confrontare anche il tipo ===
PHP:
($gatto === FALSE)
{
echo "il gatto è falso";
}
else
{
echo "il gatto è vero";
}
si vale2


Ciao borgo italia,

quindi consigli di usare questa sintassi:

PHP:
<?php
$cane = TRUE;
$gatto = FALSE;
if($gatto === FALSE)
{
echo "il gatto è falso";
}
else
{
echo "il gatto è vero";
}  
?>

anche in php la regola per i valori booleani falso o vero corrispondono a 0 e 1


PHP:
<?php
$cane = 1;
$gatto = 0;
if($gatto === 0)
{
echo "il gatto è falso";
}
else
{
echo "il gatto è vero";
}  
?>

Questo da lo stesso risultato:

il gatto è falso


Valeria.
 
ciao vale2
prova questo script
PHP:
<?php
$stringa = 'abc';
$cerca   = 'a';
$pos = strpos($stringa, $cerca);
if($pos== FALSE){
	echo "carattere non trovato<br>";
}else{
	echo "carattere trovato<br>";
}

if($pos=== FALSE){
	echo "carattere non trovato<br>";
}else{
	echo "carattere trovato<br>";
}
?>
così vedi perche è meglio usare ===
 
ciao vale2
prova questo script
PHP:
<?php
$stringa = 'abc';
$cerca   = 'a';
$pos = strpos($stringa, $cerca);
if($pos== FALSE){
	echo "carattere non trovato<br>";
}else{
	echo "carattere trovato<br>";
}

if($pos=== FALSE){
	echo "carattere non trovato<br>";
}else{
	echo "carattere trovato<br>";
}
?>
così vedi perche è meglio usare ===

Ciao borgo italia,

da quello che ho letto e provato l'operatore di assegnazione == considera il primo carattere della sottostringa da cercare nella stringa come 0

e stampa "carattere non trovato" . Se invece di 'a' avrei cercato 'b' lo trova con == e con ===


PHP:
<?php
$stringa = 'abc';
$cerca   = 'b';
$pos = strpos($stringa, $cerca);
if($pos == FALSE){
    echo "carattere $cerca non trovato<br>";
}else{
    echo "carattere $cerca trovato<br>";
    echo "Si trova alla posizione $pos<br>";
}

if($pos === FALSE){
    echo "carattere $cerca non trovato<br>";
}else{
    echo "carattere $cerca trovato<br>";
    echo "Si trova alla posizione $pos<br>";
}
?>

il risultato del tuo esempio:

carattere a non trovato == 'a' primo carattere non trovato 0
carattere a trovato === 'a' primo carattere trovato 0
Si trova alla posizione 0

l'altro:


carattere b trovato
Si trova alla posizione 1
carattere b trovato
Si trova alla posizione 1

questa comparazione vale solo con strpos, == non è utilizzabile se la sottostringa da cercare contiene più di un carattere ma solo con ===?

in ASP lo avrei scritto cosi:

Codice:
<%
dim stringa, cerca
stringa = "abcdefg"
cerca = "abc"
posizione = InStr(stringa,cerca)
if (posizione) > 0 then
Response.Write("carattere " &cerca& " trovato<br>")
Response.Write("Si trova alla posizione "&posizione)
else
Response.Write("carattere " &cerca& " non trovato")
end if
%>

Risultato:

carattere abc trovato
Si trova alla posizione 1

in asp il primo carattere di una sottostringa è 1 e non c'è bisogno di una dichiarazione FALSE, il risultato è 0 se non viene trovata corrispondenza.

Voglio approfondire PHP.

Grazie, un saluto Valeria. :byebye:
 
ciao
in php il primo carattere corrisponde a pos 0, come il primo di un array vettoriale (se non definisci le chiavi).
in un certo senso questo è giusto in quanto le stringhe in php (non so se anche in asp) sono vettori, esempio

PHP:
<?php
$stringa="hgytrmloibertn";
for($k=0; $k< strlen($stringa);$k++){
	echo $stringa[$k]."<br>";
}
?>
comunque se si lavora con i boeliani dato che false può essere 0, se per caso 0 è il risultato (giusto) di qualche operazione, qundi !false, è meglio usare
=== che confronta sia il valore che il tipo
 
ciao
scusate se riprendo la discussione, ma ritengo che utilizzare (o capire quandi si deve) l'operatore di confronto === sia importante soprattutto se si usano valori booeliani.
basta provare questo semplice script per verificare
PHP:
<?php
function calcolo($endo,$sore,$sott){
	if($sore==0){
		return FALSE;
	}else{
		$ris=$endo/$sore-$sott;
		return $ris;
	}
}
$dividendo=6;
$divisore=3;
$sottrai=2;
echo "divido $dividendo per $divisore e sottraggo $sottrai<br><br>";
$risultato=calcolo($dividendo,$divisore,$sottrai);
if($risultato==FALSE){
	echo "NON puoi dividere per zero - ERRATO: $divisore NON è zero<br>";
}else{
	echo "risultato= $risultato<br>";//questo sarebbe giusto
}
echo "<br>";
if($risultato===FALSE){
	echo "NON puoi dividere per zero - GIUSTO<br>";
}else{
	echo "risultato= $risultato (questo è il risultato GIUSTO)<br>";
}
?>
lo script è semplice e corto, ma se complicato e lungo si può perdere giornate per trovare e/o capire dove si annida il "bug", considerando i casi, innumerevoli, in cui il risultato 0 è giusto
 
in quanto tempo si potrebbe iniziare a produrre siti web dinamici ed e-commerce nel mio caso?

il mio caso: conosco in modo scarso la programmazione e sto imparando ora il PHP e MYSQL con il libro di Mark Wandschneider (sviluppare applicazioni web con PHP e MYSQL).

Dipende tutto dalla tua velocità di apprendimento e da quanto sei disposto a sbatterti per imparare il codice. Purtroppo non è un parametro che si può definire a priori. Se conosci in modo scarso la programmazione può essere un bene e un male perchè non ti rifaresti a codici creati con altri linguaggi. Calcola che io personalmente ho creato il mio primo sito dinamico dopo 3 mesi di studio, però ho ottime basi di C e C++ e quindi tante cose (cicli, vettori, connessioni e via dicendo) le sapevo già...
 

Discussioni simili