Formaat : 60 cm | Kleur : century oak | Materiaal : eik | Prijs: 45,00\
Formaat : 60 cm | Kleur : dark oak | Prijs: 45,00\
Formaat : 60 cm | Kleur : grey | Prijs: 45,00\
Formaat : 80 cm | Kleur : century oak | Prijs: 75,00\
Formaat : 80 cm | Kleur : dark oak | Prijs: 75,00\
Formaat : 80 cm | Kleur : grey | Prijs: 75,00\
Deze array gemaakt:
Array
(
[0] => Array
(
[Formaat] => 60 cm
[Kleur] => century oak
[Materiaal] => eik
[Prijs] => 45,00
)
[1] => Array
(
[Formaat] => 60 cm
[Kleur] => dark oak
[Prijs] => 45,00
)
[2] => Array
(
[Formaat] => 60 cm
[Kleur] => grey
[Prijs] => 45,00
)
[3] => Array
(
[Formaat] => 80 cm
[Kleur] => century oak
[Prijs] => 75,00
)
[4] => Array
(
[Formaat] => 80 cm
[Kleur] => dark oak
[Prijs] => 75,00
)
[5] => Array
(
[Formaat] => 80 cm
[Kleur] => grey
[Prijs] => 75,00
)
)
Met de volgende code:
<select class="productchoice">
<option>Maak uw keuze</option>
<?PHP
$vars = $artikel['variabelen'];
$variabelebackslash = explode('\\', $vars);
// Maak een bruikbare array van bovenstaande string
$varpijp = array_map(function($val){
// Split
$values = array_map('trim', explode('|', $val));
// Split verder
$keyvals = array_map(function($val) {
// Split verder
return array_map('trim', explode(':', $val));
}, $values);
// Maak een associative array met de variabele namen als keys
return array_column($keyvals, 1, 0);
}, $variabelebackslash);
// Loop bovenstaande array binnen een select element
foreach($varpijp as $productvar){
// Filter eventuele lege resultaten eruit
if(!empty($productvar)){
if(!empty($productvar['Prijs'])){
$varprijs = '+ € '.$productvar['Prijs'];
}
$productvars .= '<option>'.$productvar['Formaat'].' - '.$productvar['Kleur'].' '.$varprijs.'</option>';
}
}
echo $productvars;
?>
</select>
Bovenstaande code geeft dit resultaat:

Maar eigenlijk wil ik ook de keys laten zien zodat het er zo uitziet:

Zoals je ziet staan alleen het formaat en de kleur er nu in, maar in mijn string staat ook materiaal. Ik wil graag dat ik oneindig opties kan invoeren. Dus ik moet die keys loopen samen met hun values en dat resultaat in die option tag stoppen.
Hierbinnen moet ik kijken welke keys er allemaal in elke arraylaag zitten en de waardes erbij tonen.
foreach($varpijp as $productvar){
// Filter eventuele lege resultaten eruit
if(!empty($productvar)){
if(!empty($productvar['Prijs'])){
$varprijs = '+ € '.$productvar['Prijs'];
}
$productvars .= '<option>'.$productvar['Formaat'].' - '.$productvar['Kleur'].' '.$varprijs.'</option>';
}
}
Hoe doe ik dat? Vooral die keys tonen lukt me niet.