eenmalig variabele setten
Ik heb ooit hier iemand een "trucje" zien doen op het forum, alleen ik weet niet meer hoe het werkt.
Stel we hebben een variebel $foo en die is false. Het idee is nu dat je door een foreach loop gaat, en zodra er een match plaatsvindt de variabele $foo op true wordt geset, en daarna niet meer van waarde verandert.
Dus, eerst is $foo false. Dan gaan we loopen. Als er binnen de loop een match is dan is $foo true en verandert niet meer van waarde.
Ik meen dat hier een of ander handigheidje voor was, maar ik weet niet meer hoe.
Iemand?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
foreach (blabla) {
$test = test(); // hier kan dan true of false uitkomen
$match != $test;
}
?>
foreach (blabla) {
$test = test(); // hier kan dan true of false uitkomen
$match != $test;
}
?>
Dit werkt dus niet.. maar zo'n soort constructie was het. Als $match dan eenmaal op true geset is, kon ie niet meer false worden.
Het leek dus op zoiets als $match != $test; maar exact weet ik het dus niet meer :(
Maar die van mij wordt true als Ozzie is gevonden en blijft dan ook true.
Oké, thanks ik zal kijken of ik daar wat mee kan... ik ben sowieso benieuwd/hoop dat iemand die andere nog kent.
unset ?
Daarna is de variable niet meer te gebruiken.
Code (php)
Gewijzigd op 18/04/2014 16:30:12 door Wouter Van Marrum
De "truc" is dat je aan break een getal kunt toevoegen voor het aantal loops waaraan je wilt ontsnappen. Daarmee kun je bijvoorbeeld direct een while { foreach { ... } } verlaten.
Voorbeeld van http://stackoverflow.com/questions/588892/can-you-exit-a-loop-in-php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Het was echt iets heel simpels, waardoor $match indien op true gezet, niet meer false kon worden. Maar ja... als jullie het niet weten, dan weet ik het ook niet :-s
Dan zou je in mijn voorbeeld de break kunnen weghalen: dan werkt het precies zoals je vraagt, alleen duurt het langer.
Maar ik vermoed dat je iets anders zoekt. Kun je een voorbeeld geven?
Jouw voorbeeld zou inderdaad kunnen ward. Alleen gebruik ik momenteel geen if-statement maar een rechstreekse vergelijking. Ik kan er ook een if-statement van maken, maar dan wordt de code onnodig lang. Ik ga de opmerking van SanThe er wel in verwerken. Komt goed. Dankjulliewel allemaal voor het meedenken.
for ...
$bool |= true/false;
if ($bool)
do iets
???
Iets wat niet werkt als je het test.
Ik weet echt niet wat je zoekt en lees toch vrij veel reacties op dit forum, weet je zeker dat je het goed hebt en je dit echt ergens hebt gelezen?
Dat is de Bitwise OR operator.
Het is een beetje gelijk aan `$a += $b;`
Wat eigenlijk dit betekend: $a = $a + $b;
In dit geval hebben we het dan over booleans:
$a |= $b;
Ofwel: $a = $a | $b;
Dus als je dit in een loopje zou doen:
Zeg je dus, $a is altijd false, totdat hij een keer op true wordt ge-set. In dit voorbeeld nadat $i == 2. Elke iteratie na $i = 2 blijft $a dus op true staan.
Demotje: http://codepad.viper-7.com/5uC0WR
Gewijzigd op 18/04/2014 23:22:56 door D Vivendi
Ja, ik weet het zeker :)
Ik denk dat het inderdaad de oplossing van Dos is die ik nu dankzij de uitleg van D Vivendi ook nog eens beter begrijp. Ik ga er even mee stoeien. Thanks! :)
Toevoeging op 18/04/2014 23:59:57:
P.S.
Klopt het ook dat $a geen boolean is, maar 0 of 1?
Het is wel een boolean, alleen php print dat als een 0 of 1.
Bitwise is cijfers, dus het is inderdaad geen boolean meer.
Aan het eind van de rit is $match dus een integer van 0 indien geen match, of 1 indien wel een match.
Wel een leuk systeem vind ik. Een leuke "truc" :)