Beste mensen.

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:

$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;
}


Bestaat er een simpelere manier?

Alvast bedankt voor het antwoord.

Groetjes, Jordy.
Sowieso zinloos om er 1 in te zetten als je zeker weet dat dat er reeds in zit.
<?php
if($generalSettings['lights'] != 1) {
$generalSettings = 0;
}
if($generalSettings['tones'] != 1) {
$generalSettings['tones'] = 0;
}
?>
- 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?
Ik bedoel dat dit niet hoeft:
<?php
if($generalSettings['lights'] == 1) {
$generalSettings['lights'] = 1;
}
?>
Want nu zit er al 1 in.
Dus dit kan je overslaan en alleen indien er geen 1 in zit op 0 zetten.
Ooooh, zo. Ja, slim, bedankt! Dat scheelt veel typewerk.
Bestaat er een manier dit nog simpeler te doen?
Je kan het met een array doen met de keys van $generalSettings en dan in een for-loop vergelijken:

<?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);
?>
Kan het ook zo (oplossing van StackOverflow):


// gebruik de array van hierboven
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

[size=xsmall]Toevoeging op 12/07/2017 13:08:58:[/size]

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?
Die oplossing is feitelijk beter.
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?
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.
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.

Reageren