if statement met meerdere opties
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!
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
Hier kan ik mee uit de voeten. :)
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
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.