Verschillende variabelen controleren op één statement
Ik heb stuk of zeven arrays met custom keys.
Nu is mijn vraag: hoe kan ik simpel al die verschillende array items op eenzelfde statement controleren?
Ik zie voorlopig alleen de oplossing om voor iedere variabele apart if-else conditions te schrijven.
Een klein voorbeeldje:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$generalSettings = array(
"lights" = $_POST['generalLights'],
"tones" = $_POST['generalTones']
);
if($generalSettings['lights'] == 1) {
$generalSettings['lights'] = 1;
} else {
$generalSettings = 0;
}
if($generalSettings['tones'] == 1) {
$generalSettings['tones'] = 1;
} else {
$generalSettings['tones'] = 0;
}
"lights" = $_POST['generalLights'],
"tones" = $_POST['generalTones']
);
if($generalSettings['lights'] == 1) {
$generalSettings['lights'] = 1;
} else {
$generalSettings = 0;
}
if($generalSettings['tones'] == 1) {
$generalSettings['tones'] = 1;
} else {
$generalSettings['tones'] = 0;
}
Bestaat er een simpelere manier?
Alvast bedankt voor het antwoord.
Groetjes, Jordy.
- SanThe - op 12/07/2017 12:06:12:
Sowieso zinloos om er 1 in te zetten als je zeker weet dat dat er reeds in zit.
Ik ben niet zeker dat 1 in alle velden zit.
Het zijn selectievakjes met value 1, maar als die niet aangevinkt worden, dan hebben die toch geen waarde?
of hoe zit dat dan?
Want nu zit er al 1 in.
Dus dit kan je overslaan en alleen indien er geen 1 in zit op 0 zetten.
Bestaat er een manier dit nog simpeler te doen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$generalSettings = array(
"lights" => $_POST['generalLights'], // Let op! Je had = staan, maar dat moet => zijn.
"tones" => $_POST['generalTones']
);
$keys = array_keys($generalSettings);
foreach($keys as $key) {
if($generalSettings[$key] != 1) $generalSettings[$key] = 0;
}
var_dump($generalSettings);
?>
$generalSettings = array(
"lights" => $_POST['generalLights'], // Let op! Je had = staan, maar dat moet => zijn.
"tones" => $_POST['generalTones']
);
$keys = array_keys($generalSettings);
foreach($keys as $key) {
if($generalSettings[$key] != 1) $generalSettings[$key] = 0;
}
var_dump($generalSettings);
?>
Code (php)
1
2
3
4
5
6
2
3
4
5
6
// gebruik de array van hierboven
foreach($generalSettings as $key=>$value) {
if($value != 1) [
$generalSettings[$key] = 0;
}
}
foreach($generalSettings as $key=>$value) {
if($value != 1) [
$generalSettings[$key] = 0;
}
}
Of is dat een slecht idee, en waarom?
(Ik wil bijleren van mijn vragen, daarom vraag ik ook de reden...)
Groetjes
Toevoeging op 12/07/2017 13:08:58:
en dan nog wat over de code die gedeeld werd: hoe komt het dat bij jullie sommige functies een link zijn en bij mij niet?
Als je highlighting etc wilt moet je de php open en sluit tags om je code zetten (zie de code van anderen).
Ok, en kan ik die foreach functie ook in een andere foreach functie steken, zodat ik geen zeven aparte foreach functies moet schrijven? Zo ja, hoe ongeveer?
Gewijzigd op 12/07/2017 14:44:46 door Ben van Velzen
Mogelijk kun je dit probleem dus op een andere plaats, en op een elegantere manier, oplossen.
Thomas van den Heuvel op 12/07/2017 14:58:41:
Omdat het een formulier betreft ($_POST): zou dit geen onderdeel moeten zijn van de validatie van (gegevens uit) het formulier? Of is dat juist wat je hier aan het doen bent?
Mogelijk kun je dit probleem dus op een andere plaats, en op een elegantere manier, oplossen.
Mogelijk kun je dit probleem dus op een andere plaats, en op een elegantere manier, oplossen.
Dat is precies wat ik aan het doen ben: formuliervalidatie...
Hoe zou ik het eleganter kunnen doen?
Toevoeging op 12/07/2017 15:07:56:
Ben van Velzen op 12/07/2017 14:43:14:
Dat zou je eventueel kunnen doen, maar waarom zou je 7 van deze variabelen hebben? Je zou er ook een functie van kunnen maken met een by reference argument. Whatever floats your boat.
Oeps, dit wordt een beetje te nieuw...
Wat is een "by reference argument"?
Ik heb er zeven (ondertussen 8), omdat er 8 verschillende secties in het formulier zitten.
Als alles naar wens verloopt, moet er een bepaalde output gegenereerd worden, die er ongeveer zo uit kan zien:
(En zo verder natuurlijk, tot zeven secties bereikt zijn; die achtste zijn instellingen voor het script zelf.)
Oké, dat ga ik eens uitproberen! zo veel aanpassingswerk is dat niet :)
Als het om standaardinstellingen gaat, zou ik éérst die standaard formaliseren door de arrays te definiëren en vervolgens uitsluitend de uitzonderingen op de standaard afhandelen.