[PHP] Verschil tussen || en or

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 18-09 13:39
Wat is het verschil tussen || en or?

Ik gebruik zelf bij normale if constructies ||, en heb altijd in gedachte gehad dat or voor bitwise vergelijkingen zijn. Klopt dit?

En ik dacht dat || en && aan de linkerkant van de if constructie geassocieerd zijn en de or bitwise vergelijking rechts geassocieerd, maar php.net laat daarbij zien dat dit dus niet zo is ( http://www.php.net/manual/nl/language.operators.php )

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
| is voor bitwise operations.

En ik geloof dat || een lagere prioriteit heeft dan OR.

Verder zijn ze gelijk.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Volgens mij is er geen verschil tussen || en or, en zit || er alleen in voor de compatibiliteit met o.a. C++ en or omdat dat gewoon netter uitziet. Maar ik kan me vergissen. Hoe dan ook heb ik nog nooit een functioneel verschil gezien.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 12:57

Robtimus

me Robtimus no like you

Op die pagina zelf wordt een antwoord gegeven:
I think warhog's note about the differing precedence between && / AND and || / OR is worth repeating. Since && and || evaluate before the assignment operator (=) while AND and OR evaluate after it, you can get COMPLETELY different results if you don't fully parenthesise.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

Verwijderd

or is eigenlijk bijna hetzelfde als ||

Het verschil in PHP is dat or minder "belangrijk" is, net zoals optellen en aftrekken minder "belangrijk" zijn dan vermenigvuldigen en delen. Het is zuiver de volgorde van uitvoeren die verschillend is. De or is meestal een van de laatste operators die iets te zeggen heeft.

Vergelijk het volgende verschil.

PHP:
1
2
$a = 5 && $b = 4
$a = 5 and $b = 4

In het eerste voorbeeld is $a gelijk aan true omdat:
- eerst 4 wordt toegekend aan $b
- 5 && 4 is true
- $a is dus true

In het tweede voorbeeld is $a gelijk aan 5 omdat:
- eerst 5 wordt toegekend aan $a
- omdat 5 evaluteert naar true wordt het deel rechts naast and ook uitgevoerd
- $b krijgt de waarde 4.

[ Voor 4% gewijzigd door Verwijderd op 13-12-2004 21:15 ]


Acties:
  • 0 Henk 'm!

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 18-09 13:39
voorbeeld 2 van je snap ik nog wel, maar voorbeeld 1 niet :/

[ Voor 9% gewijzigd door Cheater op 13-12-2004 21:23 ]


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 12:57

Robtimus

me Robtimus no like you

Verwijderd schreef op maandag 13 december 2004 @ 21:14:
PHP:
1
2
$a = 5 && $b = 4
$a = 5 and $b = 4
Even met haakjes:
$a = (5 && ($b = 4))
($a = 5) and ($b = 4)

Die tweede is dan eenvoudig te zien, die eerste evalueert als volgt:
$a = (5 %% ($b = 4))
$a = (5 %% $b) met $b = 4
$a = true omdat 5 %% 4 gelijk is aan true %% true dus true

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 18-09 13:39
oh maar ik heb het over in IF constructies, zonder toekenning van waarden aan variablen IN de IF constructie.

Acties:
  • 0 Henk 'm!

Verwijderd

Als je geen operators gebruikt die in precedence (volgorde) tussen || en or in liggen, maakt het niets uit.
Pagina: 1