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

时间:2016-08-22 10:00:15

标签: php arrays multidimensional-array

我需要将数据作为2D数组读取并存储在文本文件中,但我不确定该怎么做...请帮忙! 文件中的数据是这样的:

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>';

this gives me a standard array like this:

我需要将索引与位置名称保持在第一级,然后将每个索引与三个值一起转换为第一级arrays([1] within [0], [4] within [3], etc)

内的数组中的单独索引

2 个答案:

答案 0 :(得分:0)

您可以使用file解析它:

foreach(file($filename) as $lineNumber => $lineContent){
   //do something depending of $lineNumber
}

答案 1 :(得分:0)

从样本数据中,数据结构应如下: -

Location[line break]Number of property[space]Income[space]Expenditure[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);
}

注意: -

  1. 更改$ line_break(&#34; \ r \ n&#34;对于Windows,&#34; \ r&#34;对于Mac OS,&#34; \ n&#34;对于Unix / Linux&#34; )和$ path_to_file相应
  2. 这只是一个没有过滤器的简单解析器。所以请确保你的原始 数据具有一致的数据结构。
  3. 希望这有帮助。