Kortere if mogelijk?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

K i p

K i p

09/01/2010 23:39:00
Quote Anchor link
Kan dit korter?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    if ( ( $s == 'a' AND !$b ) OR ( $s == 'b' AND !$b2 ) OR ( $s != 'a' AND $s != 'b' ) )
?>
Gewijzigd op 01/01/1970 01:00:00 door K i p
 
PHP hulp

PHP hulp

19/01/2020 05:33:21
 
Yearupie Achternaamloos

Yearupie Achternaamloos

09/01/2010 23:55:00
Quote Anchor link
Het kan in ieder geval beter, je bent een quote vergeten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    if ( ( $s == 'a' AND !$bLid ) OR ( $s == 'b' AND !$bLid2 ) OR ( $s != 'a' AND $s != 'b ) )
?>
 
FRizZL isMijnUsername

FRizZL isMijnUsername

09/01/2010 23:55:00
Quote Anchor link
je zou eventueel een waarheidstabel kunnen maken.. en op basis hiervan kijken of het korten kan of niet.
 
FRizZL isMijnUsername

FRizZL isMijnUsername

09/01/2010 23:58:00
Quote Anchor link
Yearupie schreef op 09.01.2010 23:55:
Het kan in ieder geval beter, je bent een quote vergeten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    if ( ( $s == 'a' AND !$bLid ) OR ( $s == 'b' AND !$bLid2 ) OR ( $s != 'a' AND $s != 'b ) )
?>

in dat geval, jij ook!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    if ( ( $s == 'a' AND !$bLid ) OR ( $s == 'b' AND !$bLid2 ) OR ( $s != 'a' AND $s != 'b' ) )
?>
 
K i p

K i p

10/01/2010 12:56:00
Quote Anchor link
wat is een waarheidstabel

ik bedoel eigenlijk meer of het logisch gezien korter kan worden opgeschreven omdat ik nu drie OR's gebruik
 
Gerben Jacobs

Gerben Jacobs

10/01/2010 13:20:00
Quote Anchor link
Waarschijnlijk niet.

En je kunt beter || gebruiken. OR en AND zijn echt SQL dingen.
 
Wouter DS

Wouter DS

10/01/2010 13:30:00
Quote Anchor link
Gerben schreef op 10.01.2010 13:20:
Waarschijnlijk niet.

En je kunt beter || gebruiken. OR en AND zijn echt SQL dingen.

Idd,

AND = &&
OR = ||

<=>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    if(($s == 'a' && !$bLid) || ($s == 'b' && !$bLid2) || ($s != 'a' && $s != 'b'))
?>
 
John D

John D

10/01/2010 13:30:00
Quote Anchor link
Werkt OR en AND ook ? of werkt dat slechter of helemaal niet ?
Als het werkt dan bevorderd dat de leesbaarheid boven de cryptische || & tekens
 
Karl Karl

Karl Karl

10/01/2010 13:33:00
Quote Anchor link
Gerben schreef op 10.01.2010 13:20:
Waarschijnlijk niet.

En je kunt beter || gebruiken. OR en AND zijn echt SQL dingen.

Nee hoor, je kunt gewoon and, or, &&, en || gebruiken. Het heeft te maken met de de volgorde (links en rechts en boven naar beneden). Zie operators.precedence (ja, beetje vaag).
Verder denk ik dat als je een waarheidstabel wilt gebruiken dat je dan de boel om moet zetten naar binair e.d. dus daar wordt het langer van.
Gewijzigd op 01/01/1970 01:00:00 door Karl Karl
 
Joren de Wit

Joren de Wit

10/01/2010 13:36:00
Quote Anchor link
John schreef op 10.01.2010 13:30:
Werkt OR en AND ook ? of werkt dat slechter of helemaal niet ?
Als het werkt dan bevorderd dat de leesbaarheid boven de cryptische || & tekens
Ben ik het niet mee eens. De || en && operators horen gewoon bij de programmeertaal en iedereen die een klein beetje ervaring heeft, herkent ze direct en weet dus direct wat de code doet.

Hoewel OR en AND zullen werken, is het niet gebruikelijk om dat binnen PHP toe te passen. Het zal eerder onduidelijkheid opleveren dan bovengenoemde methode als je bijvoorbeeld (om welke gekke reden dan ook) zou werken met variabelen $OR en $AND.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(($OR AND $AND) OR (($OR OR $AND) AND ($AND))
?>

Zomaar een gek voorbeeldje...

ps. @Ooievaar: de werking van AND en OR en respectievelijk && en || is identiek. Daar zit geen verschil tussen.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Karl Karl

Karl Karl

10/01/2010 13:49:00
Quote Anchor link
Blanche schreef op 10.01.2010 13:36:
ps. @Ooievaar: de werking van AND en OR en respectievelijk && en || is identiek. Daar zit geen verschil tussen.

Neen!
Er is wel een verschil. Verschil in volgorde. Die pagina waar ik naar toe link zou in het Nederlands iets als 'Operator voorrang' moeten heten.
Het gaat er over om de volgorde van belang. && is belangrijker dan AND. Dus als je && en AND door elkaar gebruikt gaat het erom welke eerder is.
Er is dus wel degelijk een verschil. Met dat verschil kan je er dus ook voor zorgen dat je geen haakjes nodig hebt.
Zie ook deze comment op php.net.
En dit stond dus ook gewoon uitgelegd op operators.precedence.
Gewijzigd op 01/01/1970 01:00:00 door Karl Karl
 
John D

John D

10/01/2010 13:50:00
Quote Anchor link
Blanche: Je houdt teveel vast aan "oude waarden" met "horen gewoon bij de programmeertaal". Alle programmeertalen worden meer een meer beschrijvend en helder leesbaar en zelfs OOP. Over een tijdje zijn || en && deprecated. Juist daarom zijn AND en OR nu ook mogelijk in plaats van || &&. Jouw voorbeeld is leuk maar niet triviaal. "Iemand die een klein beetje ervaring heeft weet direct wat || en && betekenen" zeg je maar iemand die die ervaring niet heeft weet wel meteen wat AND en OR betekenen en doen, dus voordeel: leesbaarheid.
 
John D

John D

10/01/2010 13:53:00
Quote Anchor link
Ooievaar schreef op 10.01.2010 13:49:
Blanche schreef op 10.01.2010 13:36:
ps. @Ooievaar: de werking van AND en OR en respectievelijk && en || is identiek. Daar zit geen verschil tussen.

Neen!
Er is wel een verschil. Verschil in volgorde. Die pagina waar ik naar toe link zou in het Nederlands iets als 'Operator voorrang' moeten heten.
Het gaat er over om de volgorde van belang. && is belangrijker dan AND. Dus als je && en AND door elkaar gebruikt gaat het erom welke eerder is.
Er is dus wel degelijk een verschil. Met dat verschil kan je er dus ook voor zorgen dat je geen haakjes nodig hebt.
Zie ook deze comment op php.net.
En dit stond dus ook gewoon uitgelegd op operators.precedence.


Ooievaar: je stelling is onjuist. De precedence is gelijk:
http://www.php.net/manual/en/language.operators.precedence.php
Left associativity means that the expression is evaluated from left to right, right associativity means the opposite.
Gewijzigd op 01/01/1970 01:00:00 door John D
 
Karl Karl

Karl Karl

10/01/2010 13:56:00
Quote Anchor link
John schreef op 10.01.2010 13:50:
Blanche: Je houdt teveel vast aan "oude waarden" met "horen gewoon bij de programmeertaal". Alle programmeertalen worden meer een meer beschrijvend en helder leesbaar en zelfs OOP. Over een tijdje zijn || en && deprecated. Juist daarom zijn AND en OR nu ook mogelijk in plaats van || &&.

Lees mijn bericht. Er is een verschil in voorrang. && gaat boven AND.
John schreef op 10.01.2010 13:53:
Ooievaar schreef op 10.01.2010 13:49:
Blanche schreef op 10.01.2010 13:36:
ps. @Ooievaar: de werking van AND en OR en respectievelijk && en || is identiek. Daar zit geen verschil tussen.

Neen!
Er is wel een verschil. Verschil in volgorde. Die pagina waar ik naar toe link zou in het Nederlands iets als 'Operator voorrang' moeten heten.
Het gaat er over om de volgorde van belang. && is belangrijker dan AND. Dus als je && en AND door elkaar gebruikt gaat het erom welke eerder is.
Er is dus wel degelijk een verschil. Met dat verschil kan je er dus ook voor zorgen dat je geen haakjes nodig hebt.
Zie ook deze comment op php.net.
En dit stond dus ook gewoon uitgelegd op operators.precedence.


Ooievaar: je stelling is onjuist. De precedence is gelijk:
http://www.php.net/manual/en/language.operators.precedence.php

Bekijk even die pagina die je geeft. Lees die uitleg die er boven staat.
En dan de tabel bekijken.
&& staat hoger in de tabel dan AND
&& gaat voor AND.
Gewijzigd op 01/01/1970 01:00:00 door Karl Karl
 
John D

John D

10/01/2010 14:01:00
Quote Anchor link
Ik heb niet gezegd dat je het "door elkaar" moet gebruiken en ik raad dat zelfs altijd af!! Dat werkt juist optimaal verwarrend. Je probeert je gelijk te halen op verkeerde argumenten. Ik heb gesteld dat de leesbaarheid beter is wanneer je afstapt van het cryptische gedoe van || && en AND en OR gebruikt. Niet meer en niet minder.
 
Joren de Wit

Joren de Wit

10/01/2010 14:03:00
Quote Anchor link
@Ooievaar: dat is alleen van belang in de IMO onlogische situatie dat je && en AND door elkaar gebruikt. Waarom zou je dat willen doen?

Je hebt echter wel gelijk en dat geeft mij bovendien nog een extra reden om AND en OR af te raden. Die operators doen niet wat je zou verwachten, zie dit voorbeeld van php.net:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
// The result of the expression (true && false) is assigned to $g
// Acts like: ($g = (true && false))

$g = true && false;

// The constant true is assigned to $h and then false is ignored
// Acts like: (($h = true) and false)

$h = true and false;
?>

Waar je dus zou verwachten dat $h het resultaat van de expressie 'true and false' (dus false) bevat, krijgt $h de waarde true. Als je daar niet op bedacht bent, wordt het leuk debuggen!
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
- SanThe -

- SanThe -

10/01/2010 14:06:00
Quote Anchor link
Ieder blijkbaar zijn eigen mening. Ik gebruik altijd OR en AND omdat ik dat veel duidelijker vind. Deze worden ook in diverse programmeertalen gebruikt.
 
John D

John D

10/01/2010 14:09:00
Quote Anchor link
SanThe: Dank and I rest my case!!
 
Joren de Wit

Joren de Wit

10/01/2010 14:17:00
Quote Anchor link
Natuurlijk is ook dit een kwestie van smaak en gebruik van methoden waaraan je gewend bent. Alleen bij het gebruik van AND en OR zul je er dan dus wel voor moeten zorgen dat je bedacht bent op de 'functionaliteit' die ik in mijn vorige post al aangaf. Het werkt niet altijd zoals je zou verwachten!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if($res = mysql_query($sql) && $continue) {
  // Wordt uitgevoerd als query gelukt is en $continue TRUE is
}

if($res = mysql_query($sql) AND $continue) {
  // Wordt uitgevoerd als query gelukt is, ongeacht de waarde van $continue!
}
?>

Ik houd het voorlopig gewoon bij || en && :-)
 
John D

John D

10/01/2010 14:25:00
Quote Anchor link
Blanche: je beide voorbeelden zou ik sowieso al nooit gebruiken. Ik vind het nogal gezocht, de $res is overbodig: mysql_query() returns TRUE on success.
Je code moet dus zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(mysql_query($sql) && $continue) {
}


if(mysql_query($sql) AND $continue) {
}

?>

En die wordt in beide gevallen hetzelfde geevalueerd.
 
- SanThe -

- SanThe -

10/01/2010 14:43:00
Quote Anchor link
SanThe schreef op 10.01.2010 14:06:
Ieder blijkbaar zijn eigen mening. Ik gebruik altijd OR en AND omdat ik dat veel duidelijker vind. Deze worden ook in diverse programmeertalen gebruikt.

Kleine aanvulling: Ik gebruik in situaties die Blanche aangeeft dan ook altijd haakjes om de verschillende prioriteiten aan te geven.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.