Hoe kan ik de keys plus de waardes laten zien in deze loop
Code (php)
1
2
3
4
5
6
2
3
4
5
6
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\
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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
)
)
(
[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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<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>
<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.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
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>';
}
}
// 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.
ipv
Jan
Top thanks! Ik heb het nu werkend zoals ik wil.
Faceted Searches waarbij je aparte zoekblokjes hebt voor verschillende aspecten, zoals bijvoorbeeld voor SSD harde schijven, daar kun je sorteren op eigenschappen zoals prijs, merk, opslagcapaciteit et cetera. Misschien biedt dat hier uitkomst? Moet je wel even kijken wat je doet als bepaalde artikelen bepaalde eigenschappen niet hebben (zoals materiaal).
En als je invloed hebt op dat invoerformaat (die lap tekst in je oorspronkelijke bericht), stap hier snel vanaf, want dat is een compleet onhandelbaar formaat. Het kost veelste veel moeite om daar informatie uit te prutsen. Maak gebruik van JSON of een ander formaat, dat werkt echt stukken eenvoudiger.
Hm. Op veel sites zie je ook En als je invloed hebt op dat invoerformaat (die lap tekst in je oorspronkelijke bericht), stap hier snel vanaf, want dat is een compleet onhandelbaar formaat. Het kost veelste veel moeite om daar informatie uit te prutsen. Maak gebruik van JSON of een ander formaat, dat werkt echt stukken eenvoudiger.
Gewijzigd op 12/04/2018 16:39:50 door Thomas van den Heuvel