Reputation: 2659
I've got the following string which is inside $vars
:
Formaat : 60 cm | Kleur : century oak | 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\
I did the following to split every line:
$vars = $artikel['variabelen'];
$variabelebackslash = explode('\\', $vars);
echo '<pre>';
print_r($variabelebackslash);
echo '</pre>';
Which gives me this result:
Array
(
[0] => Formaat : 60 cm | Kleur : century oak | Prijs: 45,00
[1] => Formaat : 60 cm | Kleur : dark oak | Prijs: 45,00
[2] => Formaat : 60 cm | Kleur : grey | Prijs: 45,00
[3] => Formaat : 80 cm | Kleur : century oak | Prijs: 75,00
[4] => Formaat : 80 cm | Kleur : dark oak | Prijs: 75,00
[5] => Formaat : 80 cm | Kleur : grey | Prijs: 75,00
)
Now I want to create a multidimensional array which would look like this:
Array
(
array
(
Formaat => "60cm",
Kleur => "century oak",
Prijs => "45,00"
)
array
(
Formaat => "60cm",
Kleur => "dark oak",
Prijs => "45,00"
)
array
(
Formaat => "60cm",
Kleur => "grey",
Prijs => "45,00"
)
array
(
Formaat => "80cm",
Kleur => "century oak",
Prijs => "75,00"
)
array
(
Formaat => "80cm",
Kleur => "dark oak",
Prijs => "75,00"
)
array
(
Formaat => "80cm",
Kleur => "grey",
Prijs => "75,00"
)
)
How can I do this?
I've tried further splitting the values like this:
foreach($variabelebackslash as $varback){
$varpijp .= explode('|', $varback);
}
echo '<pre>';
print_r($varpijp);
echo '</pre>';
But this returns:
ArrayArrayArrayArrayArrayArrayArray
Upvotes: 1
Views: 58
Reputation: 19780
You are concatenate as string .=
an array. So the array is converted to a string "Array", with a "Array to string conversion" warning.
You could use a combination of array_map()
, array_column()
to convert your initial array to your expected array:
$variabelebackslash = array(
'Formaat : 60 cm | Kleur : century oak | 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'
);
// Foreach element of the array,
$varpijp = array_map(function($val){
// split using | and trim values.
$values = array_map('trim', explode('|', $val));
// foreach elements,
$keyvals = array_map(function($val) {
// explode using : and trim them:
return array_map('trim', explode(':', $val));
}, $values);
// create associative array using $keyvals array:
return array_column($keyvals, 1, 0);
}, $variabelebackslash);
echo '<pre>';
print_r($varpijp);
echo '</pre>';
Outputs:
Array
(
[0] => Array
(
[Formaat] => 60 cm
[Kleur] => century oak
[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
)
)
Upvotes: 2