Invata PHPcu punctsivirgula.ro

C O N T I N U T
Tutorial PHP in limba romana.

Explicatii, exemple si aplicatii in PHP pentru incepatori. Tutorial cu scripturi PHP


Operatori de comparare    0 ! 

$a == $b // egal
$a === $b // identic (aceeasi valoare si acelasi tip) 
 
$a != $b // diferit
$a <> $b // diferit
$a !== $b // ne-identic
 
$a < $b // strict mai mic
$a <= $b // mai mic sau egal
 
$a > $b // strict mai mare
$a >= $b // mai mare sau egal
Exemple:
<?php
$a = 4; # initializam $a cu numarul 4
$b = "4"; # initializam $b cu string-ul "4"
 
if( $a == 4 ) print "\$a este 4";   # va afisa "$a este 4"
else print "\$a nu este 4";
 
if( $a == $b ) print "Sunt egale";  # va afisa "Sunt egale"
else print "Nu sunt egale";
 
if( $a === $b ) print "Sunt identice";  # va afisa "Nu sunt identice"
else print "Nu sunt identice";
# Nota: deoarece $a este numar iar $b string, ele nu sunt identice
 
if( $a > 4 ) print "\$a este mai mare decat 4";
?>
Atentie! Daca se compara un string (text) cu un numar, stringul este convertit la un numar. Exemplu:
"text" == 0 // echivalent 0 == 0, evalueaza la true

Daca se compara 2 stringuri ce contin numere, acestea sunt mai intai convertite la numerele pe care le reprezinta si apoi are loc comparatia. Astfel, 2 texte care sunt diferite ar putea fi considerate egale. Exemplu:

"1" == "01" // echivalent 1 == 1, evalueaza la true
"1" == "1e0" // echivalent 1 == 1, evalueaza la true
Nota: "01" si "1e0" sunt notatii matematice diferite pentru numarul 1.

Diferenta intre operatorii == si =
Operatorul == este diferit de operatorul de atribuire = si nu trebuie confundati. Dublu-egal (==) este folosit pentru comparare iar egal simplu (=) - pentru atribuirea de valori unei variabile.

# $a = 5 este o atribuire.
print $a = 5; // 5
# instructiunea print afiseaza rezultatul atribuirii ( rezultatul unei atribuiri este 
# intotdeauna egal cu valoarea atribuita
 
# $a == 1 este o verificare. Instructiunea afiseaza rezultatul verificarii.
print $a == 1; // false

In timp ce atribuirile se pot folosi atat de sine statator ($a = 1;), cat si ca expresii in cadrul instructiunilor (print $a = 1; return $a = 1;) operatorii == sau === sunt folositi doar in cadrul instructiunilor.

# corect
$a = 10; # atribuire de sine statatoare
print $a = 10; # atribuire + afisarea rezultatului atribuirii
 
# incorect - nu genereaza erori dar aceasta constructie este inutila.
$a == 1; # nu se face nimic cu rezultatul comparatiei
 
# corect
print $a == 1; # se afiseaza rezultatul comparatiei
print $a === '1'; # se afiseaza rezultatul comparatiei exacte
if( $a == 1 ) echo 'egal'; # se face o verificare

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.

 


Operatorul ternar    2 ! 

PHP ofera un operator care are 3 termeni. Sintaxa lui este urmatoarea:

(conditie ? adevarat : fals )

De remarcat ca adevarat, fals si conditie nu sunt instructiuni ci expresii (variabile, constante, stringuri, etc) iar operatorul returneaza o valoare si nu o variabila.

print ( 1 == 2 ? 'egal' : 'ne-egal' ); // afiseaza ne-egal
cristina a spus dar nu - 21.08.2010

nu se poate, ca in loc de "?" si":" sa folosim pur si simplu ivrgula:print(1==2,"egal","ne-ega");?ca in c++?

Alexandru a spus Pentru Cristina - 21.08.2010

Cred ca nu am explicat prea bine. Operatorul ternar (?...:) face de fapt o verificare, si in functie de rezultatul verificarii returneaza ori prima expresie de dupa conditie, ori a doua.

Exemplul meu s-ar traduce in felul urmator:

printeaza "egal" daca 1 == 2 sau "ne-egal" daca 1 != 2

Este singura modalitate de a obtine aceasta functionalitate, fara sa folosesti instructiunea "if"

Note: si C++ are un operator similar cu acelasi efect ca in PHP


Adauga un comentariu la aceasta sectiune.

 


Operatori de incrementare/decrementare    1 ! 

Incrementare inseamna cresterea valorii, de obicei cu o unitate, iar decrementarea este operatia inversa. PHP ofera (ca si C/C++) posibilitatea ca incrementarea/decrementarea sa se faca printr-un operator, fara sa fie nevoie de o instructiune separata. Spre exemplu:

$a = 1;
 
// pentru a-l creste pe $a cu o unitate, normal am scrie:
$a = $a + 1;
 
// folosind operatorul de incrementare scriem:
$a++;
// sau
++$a;
 
// pentru a afisa noua valoare, putem aplica operatorul direct din instructiunea print:
print ++$a;

Dupa cum se poate observa, putem scrie $a++ si ++$a. Diferenta este ca atunci cand ++ apare inainte de variabila, PHP face mai intai incrementarea si apoi returneaza noua valoare. Cand ++ apare dupa, se returneaza valoarea actuala (ne-incrementata) si apoi se creste cu o unitate. Exemplu:

$a = 1;
print $a++; // afiseaza 1 - mai intai se afiseaza valoarea curenta, dupa care $a devine 2;
print $a; // afiseaza 2 - $a are valoarea 2 dupa incrementare;
 
$a = 1
print ++$a; // afiseaza 2 - mai intai $a creste cu o unitate, apoi este afisata noua valoare
print $a; // afiseaza 2 - $a are valoarea 2;

Nota: aceleasi observatii (legate de pozitie) se aplica si pentru operatorul de decrementare.

$a = 2;
print $a--; // afiseaza 2 - mai intai se afiseaza valoarea curenta, dupa care $a devine 1;
print $a; // afiseaza 1 - $a are valoarea 1 dupa decrementare;
 
$a = 2
print --$a; // afiseaza 1 - mai intai $a scade cu o unitate, apoi este afisata noua valoare
print $a; // afiseaza 1 - $a are valoarea 1;
eugen a spus decrementare - 14.03.2009

--$a
//su
$a--


Adauga un comentariu la aceasta sectiune.

 


Operatori de atribuire    2 ! 

$a = 1; // atribuire simpla
 
$a += 4; // echivalent cu $a = $a + 4; $a are valoarea 5 acum
$a -= 1; // echivalent cu $a = $a - 1;
$a *= 2; // echivalent cu $a = $a * 2;
$a /= 3; // echivalent cu $a = $a / 3;
$a %= 2; // echivalent cu $a = $a % 2; restul impartirii lui $a la 2
 
$a = &$b; /* $a este o referinta la $b, adica ambele variabile fac referire 
   la aceeasi entitate; daca $a se schimba, se va schimba si $b. 
   Altfel spus, $a este un alias pentru $b */
 
$s = "Salut"; // atribuire simpla
$s .= " straine!"; // echivalent $s = $s . " straine!";
eugen a spus o mica corectie - 14.03.2009

$a += 4; // echivalent cu $a = $a + 1; $a are valoarea 5 acum

Alexandru a spus corectie - 16.03.2009

De fapt este echivalent cu $a = $a + 4 - hehe, neatentia e molipsitoare :P
Am corectat, multumesc!


Adauga un comentariu la aceasta sectiune.

 


Operatori pentru siruri de caractere    1 ! 

In aceasta categorie sunt inclusi 2 operatori ".=" (operator de atribuire prin concatenare - vezi mai sus) si "."
Punctul (.) este operatorul de concatenare (legare) stringuri.

print "Text1" . " legat de " . "Text2"; // afiseaza Text1 legat de Text2
 
$a = "Eu am";
print $a . " mere"; // afiseaza Eu am mere;
cristina a spus nu se poate? - 21.08.2010

la concatenare nu putem foosi si operatorul&?


Adauga un comentariu la aceasta sectiune.

 


Operatori de control al erorilor @    0 ! 

Operatorul @ este folosit pentru a suprima erorile sau avertismentele produse de PHP.

// $nedefinit = 1; - nu se executa, variabila nu e definita
print $nedefinit; // Notice: Undefined variable: nedefinit in file.php on line 120
@print $nedefinit; // nu va genera nici un avertisment / notificare
 
include( "inexistent.php" ); // Warning: include(nedefinit) failed to open...
@include( "inexistent.php" ); // nu afiseaza nici un avertisment

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.

 


Operatorul de executie ` `    1 ! 

Operatorul de executie permite rularea unor aplicatii sau comenzi ale sistemului de operare direct din PHP. Rezultatul executiei este capturat de script si poate fi prelucrat sau afisat. Operatorul ` ` este echivalent cu functia shell_exec.

# in ambele situatii de mai jos este afisat continutul directrului curent
$output = `ls -al`;
echo "<pre>$output</pre>";
 
$output = shell_exec('ls -ala');
echo "<pre>$output</pre>";
eu1234 a spus ls pt linux - 30.08.2011

din cate am vazut comanda nu face nimica in windows


Adauga un comentariu la aceasta sectiune.

 


Alti operatori    0 ! 

PHP mai dispune de urmatoarele tipuri de operatori:

  • Operatori aritmetici: +, -, *, etc
  • Operatori pe biti: &, |, ^, ~, <<, >>
  • Operatori logici: and, or, xor, &&, ||
  • Operatori de tip: instanceof
  • Operatori pentru vectori: asemanatori celor de comparare, doar ca se aplica vectorilor, operatorul de uniune (+) - leaga 2 sau mai multi vectori

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.