OPERATORS IN PHP

ARITHMETIC OPERATORS

php logo

They follow the rules of arithmetic we learned in school.

Arithmetic Operators

OPERATORS ON STRINGS

The first is the chaining operator, the dot . the other is the assignment operator =.

Operators on strings

COMPARISON OPERATORS

As the name implies such operators allow us to compare values. The advice to have total control over the code is to cast before comparing two values of different types and use strict equality === in order to check type and value. In PHP 7 a new comparison operator was introduced, the spaceship operator <=> compares two values and returns -1 if the first value is less than the second, 0 if they are equal, 1 if the first value is greater than the second. This operator is often used in callback functions i.e., a function that we pass as an argument in the invocation of another function.

<?php
//OPERATORI DI CONFRONTO
$a = 10;
$b = "10";//Viene trasformato in (int)10;
/*--Se non vogliamo demandare a PHP la conversione automatica
da string a int possiamo fare noi la conversione.*/
//$b = (int)"10";
var_dump($a == $b);//== Operatore di uguaglianza
/*--Se vogliamo essere certi che non solo il valore sia
uguale ma anche il tipo usiamo l'operatore === 
(uguaglianza stretta)*/
var_dump($a === $b);//false la prima cosa che fa PHP è
//controllare se il tipo di dato è uguale.
var_dump($a != $b);//Operatore di disuguaglianza
var_dump($a !== $b);//Operatore di disuguaglianza stretta
//Controlliamo anche il tipo
$a = 10;
$b = (int)"12";
var_dump($a < $b);//Operatori di disuguaglianza <;<=;>;>=
/*-- In PHP 7 è stato introdotto un nuovo operatore di
confronto, l'operatore spaceship <=> confronta due valori
e ritorna -1 se il primo valore è minore del secondo,
0 se sono uguali 1 se il primo valore è maggiore del
secondo.*/
$a = 10;
$b = 20;
echo $a <=> $b;
/*--Tale operatore viene utilizzato spesso nelle funzioni di
callback cioè una funzione che passiamo come argomento
nell'invocazione di un'altra funzione.*/

INCREMENT AND DECREMENT OPERATORS

<?php
//OPERATORI DI INCREMENTO E DECREMENTO ++; --
$a = 1;
$b = 2;
//$a++;//2
echo $a++ ."\n\r";/*--Post incremento, significa che prima viene 
ritornato $a e mostrata con echo e poi viene incrementato. 
Se facciamo un echo subito dopo abbiamo 2. La variabile viene 
incrementata dopo l'istruzione*/
echo $a."\n\r";
echo ++$b ."\n\r"; /*--Pre incremento, prima viene incrementato b
poi ritornato con echo.*/
$a = 1;
echo $a--."\n\r";/*--Post decremento, significa che prima viene 
ritornato $a e mostrato con echo e poi viene decrementato. 
Se facciamo un echo subito dopo abbiamo 0. La variabile viene 
incrementata dopo l'istruzione*/
echo $a."\n\r";

LOGICAL OPERATORS

<?php
//OPERATORI LOGICI AND &&; OR ||;XOR ;NOT !
$sole = true;
$voglia = true;
/*--Supponiamo che vogliamo fare una passegiiata
se c'è il sole e se ne abbiamo voglia.*/
if ($sole === true && $voglia === true)//Se vogliamo che entrambe le condizioni siano vere usiamo un AND.
{
    echo 'Faremo una passeggiata'."\n\r";
}else{
    echo 'Non faremo una passeggiata'."\n\r";
}
/*--L'opratore logico AND ritorna true solo se entrambe le condizioni
sono vere.*/
var_dump(true && true)."\n\r";
var_dump(true && false)."\n\r";
var_dump(false && false). "\n\r";
/*--L'operatore logico || ritorna true se almeno una delle due condizioni è vera.*/
var_dump(true || true)."\n\r";
var_dump(true || false)."\n\r";
var_dump(false || false). "\n\r";
/*--Operatore xor abbiamo true se una condizione è true e l'altra false*/
var_dump(true xor true)."\n\r";
var_dump(true xor false)."\n\r";
var_dump(false xor true). "\n\r";
var_dump(false xor false). "\n\r";
/*--L'operatore not (!) di negazione inverte il valore, da true a false
e da false a true*/
var_dump(!false). "\n\r";
$stringa = 'Corso PHP';
var_dump((boolean)($stringa));//Solo se abbiamo una stringa vuota ciene convertita in false.
var_dump((boolean)(0));//false
var_dump((boolean)(0.0));//false
var_dump((boolean)(null));//false
var_dump((boolean)([]));//Array vuoto (false)

if (!$_POST){//Array vuoto. Non possiamo utlizzare una stretta uguaglianza $_POST === false perchè i tipi sono diversi (ramo else)
    echo 'Form non inviato...';
}else
{
    echo 'Form inviato...'; 
}
/*--$_POST verrà convertito da PHP nel booleano false e l'uguaglianza $_POST == false sarà vera. possiamo anche usare l'operatore
! per entrare nella struttura condizionale, $_POST viene convertito in false, negandolo avremo true.*/
?>
<!DOCTYPE html>
<html lang="it">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form action="OperatoriLogici.php" method="post">
        <input type="text" name="campo1">
        <input type="submit" name="myForm" value="Invia...">
    </form>
</body>
</html>

LINKS TO PREVIOUS POSTS

THE PHP LANGUAGE

LINK TO THE CODE ON GITHUB

GITHUB