if statement met meerdere opties

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Piet Klaas

Piet Klaas

14/11/2012 23:12:44
Quote Anchor link
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!
 
PHP hulp

PHP hulp

22/12/2024 12:39:50
 
Erwin van Hoof

Erwin van Hoof

14/11/2012 23:32:43
Quote Anchor link
Hoi Piet,

Dit zou een mogelijke oplossing kunnen zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}


?>


Groet

Erwin van Hoof
SiteOn
Gewijzigd op 14/11/2012 23:41:56 door Erwin van Hoof
 
Piet Klaas

Piet Klaas

15/11/2012 12:50:58
Quote Anchor link
Hartstikke bedankt Erwin!
Hier kan ik mee uit de voeten. :)
 
Terence Hersbach

Terence Hersbach

15/11/2012 13:57:48
Quote Anchor link
Of je misbruikt de mogelijkheden van php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}


?>
:)

edit: je moest de nulwaardes hebben
Gewijzigd op 15/11/2012 13:59:58 door Terence Hersbach
 
Eddy E

Eddy E

15/11/2012 17:32:49
Quote Anchor link
Of met een array:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

 }
?>


Toevoeging op 15/11/2012 17:36:57:

Of deze?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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...

 }
?>
Gewijzigd op 15/11/2012 18:06:54 door Eddy E
 
- SanThe -

- SanThe -

15/11/2012 17:58:10
Quote Anchor link
Eddy Erkelens op 15/11/2012 17:32:49:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
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.
 
Eddy E

Eddy E

15/11/2012 18:06:24
Quote Anchor link
Inderdaad gelijk: ik zet er nog even een count() omheen.
 



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.