php - 将txt文件分解为多维数组

标签 php arrays text multidimensional-array explode

我有一个如下所示的 .txt 文件:

Test = 10849831 = August 6, 2013:
56cake = 0 = August 6, 2013:
Wwe = 812986192 = August 6, 2013:

我想分解上面的文件以创建一个如下所示的数组:

Array
(
[Test] => Array
  (
  [0] => 10849831
  [1] => August 6, 2013
  )
[56cake] => Array
  (
  [0] => 0
  [1] => August 6, 2013
  )
[Wwe] => Array
  (
  [0] => 812986192
  [1] => August 6, 2013
  )
)

我怎样才能做到这一点?我已经尝试过使用类似 explode(":", $data) 但我不知道如何使用它来完成我上面想要的操作。我对 PHP 还很陌生。

最佳答案

只需一点点数组迭代就可以解决问题:explode , array_map , trim , issetforeach

PHP 示例

$txt = <<<DOC
Test = 10849831 = August 6, 2013:
56cake = 0 = August 6, 2013:
Wwe = 812986192 = August 6, 2013:
DOC;

$Output = array();
$Lines = explode(":", $txt);

foreach($Lines as $line) {
    $Rows = array_map('trim', explode(" = ", $line));
    if(!isset($Rows[0], $Rows[1], $Rows[2])) continue;
    $Output[$Rows[0]] = array($Rows[1], $Rows[2]);
}

print_r($Output);

PHP 代码输出

Array
(
    [Test] => Array
        (
            [0] => 10849831
            [1] => August 6, 2013
        )

    [56cake] => Array
        (
            [0] => 0
            [1] => August 6, 2013
        )

    [Wwe] => Array
        (
            [0] => 812986192
            [1] => August 6, 2013
        )

)

代码解释

  1. 使用 explode(":", $txt) 分隔行
  2. 循环遍历每一行,并再次使用 explode 通过 = 分解每个部分
  3. 使用array_map循环每个值并删除空格
  4. 检查以确保我们有 3 个值 isset,如果没有,则跳过迭代
  5. 将收集到的值插入输出数组

关于php - 将txt文件分解为多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18218254/

相关文章:

c++ - mergesort C++ 实现越界索引访问

text - 如何增加 MPAndroid 条形图顶部文本值的大小?

php - Laravel whereHas 获取关系

php - 在 pdo 中绑定(bind)多个值

javascript - 像高斯函数一样排列数组(最大值在中间,最小值在边缘)

python - 如何使用Python根据ascii顺序移动字符

php - 模型中的错误处理 (MVC)

php - 简单的ajax onclick问题

android - 在 Android 中禁用文本的默认 css 设置

text - 是否有标记语言来描述含义?