【问题标题】:PHP array of delimited strings into multidimensional key value将分隔字符串的 PHP 数组转换为多维键值
【发布时间】:2016-02-09 14:32:15
【问题描述】:

我有以下带有分隔符的字符串数组 ':' 和 ';' (实际数据将是 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;...'

当我将上述内容转换为 key => value 时,Filednames 会覆盖。所以我试图把它变成一个多维数组。我环顾四周,没有找到解决方案,需要一些帮助。

我使用了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'

如何将它放入 key => 值中,例如:

array
   0 =>
      array => 
        'Fieldname1' => 'value'
        'Fieldname2' => 'value'
        'Fieldname3' => 'value'
   1 =>
        'Fieldname1' => 'value'
        'Fieldname2' => 'value'
        'Fieldname3' => 'value'
   2=>
        'Fieldname1' => 'value'
        'Fieldname2' => 'value'
        'Fieldname3' => 'value'

【问题讨论】:

  • :的分隔符再次分解它

标签: php arrays string explode csv


【解决方案1】:

测试和工作,

<?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);

返回

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
        )

)

http://ideone.com/Q69vVK

【讨论】:

  • 尽量不要删除您的评论,此外,拒绝投票只是在接受之前。我不打算吵架,但我有点失望。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多