如何在PHP中将文本文件数据存储为二维数组

如何在PHP中将文本文件数据存储为二维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我需要读取和存储的数据在一个文本文件作为二维数组,但我真的不知道如何做到这一点。。。请帮忙! 文件中的数据如下所示: Iver Heath 32 110.0 57.0 High Wycombe 35 235.0 121.0 Datchet 12 78.0 38.0 Englefield Green 12 278.0 157.0 Uxbridge 12 123.0 57.0 ……等等 以下是我迄今为止所尝试的: $file = array_filter(array_map("trim",

我需要读取和存储的数据在一个文本文件作为二维数组,但我真的不知道如何做到这一点。。。请帮忙! 文件中的数据如下所示:

Iver Heath
32 110.0 57.0

High Wycombe
35 235.0 121.0

Datchet
12 78.0 38.0

Englefield Green
12 278.0 157.0

Uxbridge
12 123.0 57.0
……等等

以下是我迄今为止所尝试的:

$file = array_filter(array_map("trim", file("branches.txt")), "strlen");
        print_r($file) . '</br>';
$file=array\u过滤器(array\u映射(“trim”、文件(“branchs.txt”)、“strlen”);
打印($file)。'
';

我需要将带有位置名称的索引保持在第一级,然后将带有三个值的每个索引转换为第一级
数组中的一个数组中的单独索引([0]中的[1],[3]中的[4]等等)

您可以使用以下方法对其进行解析:


根据样本数据,数据结构应如下所示:-

位置[line break]房产数量[space]收入[space]支出[line break][line break]

解析器:-

// config
$line_break = "\r\n";
$path_to_file = "path/to/file";

// read file content,
$data = file_get_contents("$path_to_file");

// split data to array of records
$data = explode("{$line_break}{$line_break}", $data);

// split record to fields,
for ($i = 0; $i < count($data); $i++) {
    $data[$i] = explode("{$line_break}", trim($data[$i]), 2);
    list($data[$i][1], $data[$i][2], $data[$i][3])  = explode(' ', trim($data[$i][1]), 3);
}
//配置
$line\u break=“\r\n”;
$path\u to\u file=“path/to/file”;
//读取文件内容,
$data=file_get_contents($path_to_file”);
//将数据拆分为记录数组
$data=explode(“{$line_break}{$line_break},$data”);
//将记录拆分为字段,
对于($i=0;$i
注:-

  • 相应地将$line\u break(“\r\n”用于Windows,“\r”用于Mac OS,“\n”用于Unix/Linux”)和$path\u更改为\u文件
  • 这只是一个没有过滤器的简单解析器。所以请确保您的原始 数据具有一致的数据结构

  • 希望这能有所帮助。

    你能发布你所做的吗?你希望第一行是索引,第二行是文件中的值吗?欢迎使用Stack Oveflow。请访问帮助中心,并查看询问内容和方式。@Saurabh我已编辑它以包含我现在尝试的内容,抱歉:)@theinarasu我已将其编辑为包含w我现在试过的帽子,抱歉:)
    // config
    $line_break = "\r\n";
    $path_to_file = "path/to/file";
    
    // read file content,
    $data = file_get_contents("$path_to_file");
    
    // split data to array of records
    $data = explode("{$line_break}{$line_break}", $data);
    
    // split record to fields,
    for ($i = 0; $i < count($data); $i++) {
        $data[$i] = explode("{$line_break}", trim($data[$i]), 2);
        list($data[$i][1], $data[$i][2], $data[$i][3])  = explode(' ', trim($data[$i][1]), 3);
    }