if statement met meerdere opties
Hallo allemaal,
Ik kom er even niet uit hoe ik onderstaande if statement moet formuleren. Dus hopelijk kan iemand me even op gang helpen.
Ik heb vier variabelen ($a, $b, $c en $d) met allen een numerieke waarde.
Hoe kan ik met een if-statement bepalen of alle variabelen gelijk aan elkaar OF drie van de vier variabelen gelijk zijn aan 0?
Alvast bedankt voor jullie hulp!
Ik kom er even niet uit hoe ik onderstaande if statement moet formuleren. Dus hopelijk kan iemand me even op gang helpen.
Ik heb vier variabelen ($a, $b, $c en $d) met allen een numerieke waarde.
Hoe kan ik met een if-statement bepalen of alle variabelen gelijk aan elkaar OF drie van de vier variabelen gelijk zijn aan 0?
Alvast bedankt voor jullie hulp!
Hoi Piet,
Dit zou een mogelijke oplossing kunnen zijn:
Groet
Erwin van Hoof
SiteOn
Dit zou een mogelijke oplossing kunnen zijn:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function check_waarde ( $a, $b, $c, $d )
{
// indien een waarde nul is hoog nul_teller op met een
$nul_teller = 0;
$nul_teller = ($a === 0) ? $nul_teller + 1 : $nul_teller ;
$nul_teller = ($b === 0) ? $nul_teller + 1 : $nul_teller ;
$nul_teller = ($c === 0) ? $nul_teller + 1 : $nul_teller ;
$nul_teller = ($d === 0) ? $nul_teller + 1 : $nul_teller ;
// controleer of waarden gelijk zijn
$gelijk = ($a == $b AND $a == $c AND $a == $d);
return ($nul_teller > 2 OR $gelijk);
}
?>
function check_waarde ( $a, $b, $c, $d )
{
// indien een waarde nul is hoog nul_teller op met een
$nul_teller = 0;
$nul_teller = ($a === 0) ? $nul_teller + 1 : $nul_teller ;
$nul_teller = ($b === 0) ? $nul_teller + 1 : $nul_teller ;
$nul_teller = ($c === 0) ? $nul_teller + 1 : $nul_teller ;
$nul_teller = ($d === 0) ? $nul_teller + 1 : $nul_teller ;
// controleer of waarden gelijk zijn
$gelijk = ($a == $b AND $a == $c AND $a == $d);
return ($nul_teller > 2 OR $gelijk);
}
?>
Groet
Erwin van Hoof
SiteOn
Gewijzigd op 14/11/2012 23:41:56 door Erwin van Hoof
Hartstikke bedankt Erwin!
Hier kan ik mee uit de voeten. :)
Hier kan ik mee uit de voeten. :)
Of je misbruikt de mogelijkheden van php:
:)
edit: je moest de nulwaardes hebben
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function check_waarde ( $a, $b, $c, $d )
{
$nul_teller = !(bool) $a + !(bool) $b + !(bool) $c + !(bool) $d;
// controleer of waarden gelijk zijn
$gelijk = ($a == $b AND $a == $c AND $a == $d);
return ($nul_teller > 2 OR $gelijk);
}
?>
function check_waarde ( $a, $b, $c, $d )
{
$nul_teller = !(bool) $a + !(bool) $b + !(bool) $c + !(bool) $d;
// controleer of waarden gelijk zijn
$gelijk = ($a == $b AND $a == $c AND $a == $d);
return ($nul_teller > 2 OR $gelijk);
}
?>
edit: je moest de nulwaardes hebben
Gewijzigd op 15/11/2012 13:59:58 door Terence Hersbach
Of met een array:
Toevoeging op 15/11/2012 17:36:57:
Of deze?
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$array = sort(array($a, $b, $c, $d));
if(count(array_unique($array)) == 1 OR count(array_unique(array_pop($array))) == 1 OR count(array_unique(array_shift($array))) == 1)
{
// er is 1 unieke waarde (dus alle 4 hetzelfde) (5+5+5+5)
// of er zijn 1 unieke waarde bij 3 getallen
}
?>
$array = sort(array($a, $b, $c, $d));
if(count(array_unique($array)) == 1 OR count(array_unique(array_pop($array))) == 1 OR count(array_unique(array_shift($array))) == 1)
{
// er is 1 unieke waarde (dus alle 4 hetzelfde) (5+5+5+5)
// of er zijn 1 unieke waarde bij 3 getallen
}
?>
Toevoeging op 15/11/2012 17:36:57:
Of deze?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$array = array($a, $b, $c, $d);
$group_count = array_count_values($array);
sort($group_count);
if($group_count[0] => 3)
{
// 3 of meer zijn gelijk...
// dit was: key = key($group_count[0]);
// met $group_count[0] keer...
}
?>
$array = array($a, $b, $c, $d);
$group_count = array_count_values($array);
sort($group_count);
if($group_count[0] => 3)
{
// 3 of meer zijn gelijk...
// dit was: key = key($group_count[0]);
// met $group_count[0] keer...
}
?>
Gewijzigd op 15/11/2012 18:06:54 door Eddy E
Eddy Erkelens op 15/11/2012 17:32:49:
Code (php)
1
2
3
2
3
<?php
if(array_unique($array) == 1 OR array_unique(array_pop($array)) == 1 OR array_unique(array_shift($array)) == 1)
?>
if(array_unique($array) == 1 OR array_unique(array_pop($array)) == 1 OR array_unique(array_shift($array)) == 1)
?>
array_unique() geeft een array() terug en zal dus nooit 1 zijn.
Inderdaad gelijk: ik zet er nog even een count() omheen.




