Научи ме

Програмиране => Уроци => PHP за начинаещи => Темата е започната от: gatakka в 05 Януари 2010, 12:08:04

Титла: Логически оператори
Публикувано от: gatakka в 05 Януари 2010, 12:08:04
** Тази тема дискутира:: Логически оператори (http://nau4i.me/c/59) **
Автор: Гатака
Титла: Отг:Логически оператори
Публикувано от: intel в 28 Март 2010, 02:54:19
Само да дам един пример за тези логически оператори.
В предишен урок Иван даде един прост пример, а именно:

2-2*2 = ?

И обясни защо резултата е -2, а не 0.
Той спомена че в математика има един принцип наречен приоретизация на деиствията.

Т.е. кое деиствие след кое следва.
В конкретния пример първо винаги се извършва умножението и чак след това се извършва изваждането.

За по-нагледно ще го направя със скоби.
2-(2*2) = 2-4 = -2

Но попринцип е прието да не се слагат скоби за улеснение ;)


Така, ако искате обаче първо да се извърши изваждането и чак след това да умножите - просто преместете скобите:
(2-2)*2 = 0*2 = 0

--------------------------------------------------------------


И сега - защо ви го пиша всичкото това?
Ами защото принципа при логическите оператори е абсолютно същия!
Т.е. и тук както  в математиката има приоретизация, но на операторите.

Веднага пример:

$a = 1; $b = 2; $c = 4;
if($a==1 || $b==2  && $c ==3) {
   echo  " true " ;
}
else {
   echo  " false " ;
}


Представете си че на вас задачата ви е да познаете кое след кое ще се провери.

Т.е. тази проверка $a==1 || $b==2  && $c ==3  какво ще върне.
Сега ако ви кажа, че && е с по-голям приоритет, би трябвало сами да се сетите къде ще са скобите нали?

Правилния резултат ще е: $a==1 || ($b==2  && $c ==3) = true
А горния израз означава следното:

Ако едно от двете условия е вярно значи резултата ще е вярно(true).

Първото условие е: $а да е равно на 1.

Второто условие е: $b задължително да е равно на 2, и съответно $с задължително да е равно на 3.


Виждате ли че това е цялата философия ;)
Ако ви е трудно схващането - просто винаги си слагайте скобките, за да свикнете - няма да има грешка при изпълнението на кода :)