PHP 分隔字符串数组转换为多维键值
PHP array of delimited strings into multidimensional key value
我有以下带有分隔符“:”和“;”的字符串数组(实际数据将是 1 个或多个字符串,每个字符串中有 5 个或更多相同的 Fieldname:value 对)
0 => string 'Fieldname1:value;Filedname2:value;Fieldname3:value;...'
1 => string 'Fieldname1:value;Filedname2:value;Fieldname3:value;...'
2 => string 'Fieldname1:value;Filedname2:value;Fieldname3:value;...'
当我把上面的变成键=>值时,文件名被覆盖。所以我想把它变成一个多维数组。我环顾四周,没有找到解决方案,需要一些帮助。
我使用了 explode() 并做到了这一点:
foreach ($array as $line) {
$value[] = explode(';', $line);
}
var_dump($value);
array
0 =>
array =>
string 'Fieldname1:value'
string 'Filedname2:value'
string 'Fieldname3:value'
1 =>
array =>
string 'Fieldname1:value'
string 'Filedname2:value'
string 'Fieldname3:value'
2 =>
array =>
string 'Fieldname1:value'
string 'Filedname2:value'
string 'Fieldname3:value'
如何将其放入键 => 值中,例如:
array
0 =>
array =>
'Fieldname1' => 'value'
'Fieldname2' => 'value'
'Fieldname3' => 'value'
1 =>
'Fieldname1' => 'value'
'Fieldname2' => 'value'
'Fieldname3' => 'value'
2=>
'Fieldname1' => 'value'
'Fieldname2' => 'value'
'Fieldname3' => 'value'
经过测试并且有效,
<?php
$a = [
'Fieldname1:value;Filedname2:value;Fieldname3:value',
'Fieldname1:value;Filedname2:value;Fieldname3:value',
'Fieldname1:value;Filedname2:value;Fieldname3:value',
];
$array = array();
foreach($a as $b){
$temp_array = array();
foreach(explode(';',$b) as $c){
list($key,$val) = explode(':',$c);
$temp_array[$key] = $val;
}
$array[] = $temp_array;
}
print_r($array);
returns
Array
(
[0] => Array
(
[Fieldname1] => value
[Filedname2] => value
[Fieldname3] => value
)
[1] => Array
(
[Fieldname1] => value
[Filedname2] => value
[Fieldname3] => value
)
[2] => Array
(
[Fieldname1] => value
[Filedname2] => value
[Fieldname3] => value
)
)
我有以下带有分隔符“:”和“;”的字符串数组(实际数据将是 1 个或多个字符串,每个字符串中有 5 个或更多相同的 Fieldname:value 对)
0 => string 'Fieldname1:value;Filedname2:value;Fieldname3:value;...'
1 => string 'Fieldname1:value;Filedname2:value;Fieldname3:value;...'
2 => string 'Fieldname1:value;Filedname2:value;Fieldname3:value;...'
当我把上面的变成键=>值时,文件名被覆盖。所以我想把它变成一个多维数组。我环顾四周,没有找到解决方案,需要一些帮助。
我使用了 explode() 并做到了这一点:
foreach ($array as $line) {
$value[] = explode(';', $line);
}
var_dump($value);
array
0 =>
array =>
string 'Fieldname1:value'
string 'Filedname2:value'
string 'Fieldname3:value'
1 =>
array =>
string 'Fieldname1:value'
string 'Filedname2:value'
string 'Fieldname3:value'
2 =>
array =>
string 'Fieldname1:value'
string 'Filedname2:value'
string 'Fieldname3:value'
如何将其放入键 => 值中,例如:
array
0 =>
array =>
'Fieldname1' => 'value'
'Fieldname2' => 'value'
'Fieldname3' => 'value'
1 =>
'Fieldname1' => 'value'
'Fieldname2' => 'value'
'Fieldname3' => 'value'
2=>
'Fieldname1' => 'value'
'Fieldname2' => 'value'
'Fieldname3' => 'value'
经过测试并且有效,
<?php
$a = [
'Fieldname1:value;Filedname2:value;Fieldname3:value',
'Fieldname1:value;Filedname2:value;Fieldname3:value',
'Fieldname1:value;Filedname2:value;Fieldname3:value',
];
$array = array();
foreach($a as $b){
$temp_array = array();
foreach(explode(';',$b) as $c){
list($key,$val) = explode(':',$c);
$temp_array[$key] = $val;
}
$array[] = $temp_array;
}
print_r($array);
returns
Array
(
[0] => Array
(
[Fieldname1] => value
[Filedname2] => value
[Fieldname3] => value
)
[1] => Array
(
[Fieldname1] => value
[Filedname2] => value
[Fieldname3] => value
)
[2] => Array
(
[Fieldname1] => value
[Filedname2] => value
[Fieldname3] => value
)
)