我在$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\
我做了以下操作来分割每一行:
$vars = $artikel['variabelen'];
$variabelebackslash = explode('\\', $vars);
echo '<pre>';
print_r($variabelebackslash);
echo '</pre>';
这给了我这个结果:
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
)
现在我想创建一个多维数组,如下所示:
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"
)
)
我该怎么做?
我已尝试进一步拆分这样的值:
foreach($variabelebackslash as $varback){
$varpijp .= explode('|', $varback);
}
echo '<pre>';
print_r($varpijp);
echo '</pre>';
但是这会回来:
ArrayArrayArrayArrayArrayArrayArray
答案 0 :(得分:2)
您将串联为字符串.=
和数组。因此,数组将转换为字符串&#34;数组&#34;,并使用&#34;数组进行字符串转换&#34; 警告。
您可以使用array_map()
,array_column()
的组合将初始数组转换为预期的数组:
$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>';
输出:
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
)
)