PHP оператори (advanced)
25-05-2011
Здравейте, в урока ще видите някой по-особени оператори в PHP.
В урока няма да се обясняват оператори като && || == => (в сайта има урок за тях http://web-tourist.net/login/login/view.php?st=971) и за класове :: ->, урока е за малко по-напредналите.
Може би сте запознати с някой от тях, но все пак не е лошо да ги погледнете пак.

Оператора .= е за добавяне на новата стойност на дадена променлива, като се запазва старата стойност.
Пример:

$a = 'Hello ';
$a .= ' world!';
echo $a; // Hello world!


Същото е като


$a = 'Hello ';
$a = $a . ' world!';


=== е за сравняване на точно едни и същи стойности.
Ако например имаме


$a = true;
$b = 1;


и използваме ($a == $b) резултата ще е true, но при === резултата ще е false, защото
не са еднакви.
Трябва


$a = true;
$b = true;


за да стане номера.При ==, резултати като 1, "text" се считат за true, но при === само еднаквите са true.

Примери:


$a = true;
$b = (bool) 1;
if($a === $b)
{
echo true;
}


Резултата е true защото (bool) преобразува 1 в true.

<> е същото като != (не е равно на) и !== (е обратното на === (вж. по горе))
Попринцип по правилно е да се ползва <>.


$a = true;
$b = false;
if($a <> $b)
{
echo true;
}


Резултата е true, защото (bool) превръща променливата в true.

@ е оператор за предотвратяване на грешки.


echo file_get_contents('/no/such/path'); // грешка
echo @file_get_contents('/no/such/path'); // нищо


&= е оператор за сравняване и се използва като алтернатива на &&.
Както знаем && е оператор за И ($a и $b) са true.


$a = true;
$b = true;
if($a && $b)
{
echo true;
}


Резултата е true.

Чрез &= става така


if($a &= $b)
{
echo true;
}


Резултата пак е true;

Ето и друг пример;


$a = true;
$b = false;
$c = $a &= $b == false;
if($c)
{
echo true;
}


Пак true;

=& е оператор за правене на връзка (reference) (най-просто казано) м/у 2 оператора.
Когато едната променлива си смени стойността и другата я сменя.

Пример:


$a = 'Hello World';
$a =& $b;
$b = 'New Hello World';
echo $a; // Резултата е New Hello World


$$ се нарича променлива променлива и се използва чрез стойността на дадена променлива.
Ето пример, за да разберете най-добре.


$a = 'Hello';
$Hello = ' world';
echo "$a {$$a}";


Резултата е Hello world.

$$a взима стойността от $a и я прилага на следваща променлива.

Същото е като


$a = 'Hello';
$Hello = ' world';
echo "$a {$Hello}"; // или $a . $Hello


Така може да се ползва до безкраен брой пъти $$$$$$$$..

$function() е променлива функция.Подобно на $$, чрез съдържанието на променливата се взима функцията.


$a = '__construct';
echo $a();


Резултата е Fatal error: Call to undefined function __construct() ..

: е алтернативен начин за IF.
Ползва се за if, switch, while, for, foreach, declare.


if(true):
//
endif;

while(1 = 1):
//
endwhile;


?: се използва за така наречение inline-if (IF на един ред) и се записва още в променливата или директно връща резултат (echo (true) ? 'true' : '';).
Синтаксиса му е (ако) ? ако да : ако не;

Пример:


$a = true;
$b = false;

$c = ($a <> $b) ? true : false;


$c е равно на true, защото $a е различно от $b.

^ е оператор за сравнение на оператори който са записани (isset), но не и едновременно с един и същ резултат (true или false).

Пример:


$a = true;
$b = true;

if($a ^ $b)
{
echo "OK1"; // Result null, понеже и 2та са еднакви
}

if($a ^ $b == false)
{
echo "OK2"; // Result OK2
}


!! е оператор като (bool), връща: всички низове и числа над 1 като true и всички празни места, числа под 1 и null като false.


echo !! 'dsadasad'; // true
echo !! null; // false
echo !! -1; // false
echo !! 432243; // true


~ е оператор, при който записаните неща от дадена променлива $а не са записани в дадената променлива ~ $a.Вижте примера.


E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE


Всички грешки, освен strict, warnings и notice.

` е оператор, който се опитва да изпълни shell команда (като shell_exec()).

Eтo готов пример от PHP.net


$output = `ls -al`;
echo "<pre>$output</pre>";


<?= е съкратен таг за изписване на нещо.Същото е като <?php echo


<?= 'asd'; ?>


Резултата е asd (<?php echo 'asd'; ?>)

<% и <%= са същите като <?php и <?=

Ето един полезен линк с още оператори и по-добро обяснение: http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php

Ако имате въпроси пишете в коментарите или във форума на WT.











/ Трябва да сте регистриран за да напишете коментар /
От: jooorooo
18:38 10-10-2014
@ е оператор за предотвратяване на грешки.
1