如何将文件转换为关联数组?并使用前3个字符作为关键字


How to convert a file into an associative array? And use the first 3 characters as key

我有一个如下文件,需要将其转换为数组:

      ABC行,数字,一DEF编号,2,行GHI三,行,数字

我可以得到每一行并将其转换为数组的值,但我需要做的是将前3个字符转换为键,然后将行的其余部分转换为值。

所以我期望的数组是:

Keys  |      Values
----------------------------
ABC   |  Line, Number, One
DEF   |  Number, Two, Line
GHI   |  Three, Line, Number

老实说,我不太确定从哪里开始,我一直在寻找,但没能找到一种方法,只取前3个字符,并将其转化为这行剩余部分的关键。

我从一些代码开始,看起来像这样:

<?php
  echo "Name<br/>";
  $file = "hw3.txt";
  $f1 = fopen($file, 'r');
  $array = array();

?>

这应该适用于您:

使用file()将文件放入阵列中。然后使用array_walk()遍历数组,取每个值的前3个字符并将其添加到$keys数组中。之后,您可以从值中删除前3个字符。

最后只有array_combine(),即带有$arr$keys阵列,例如

<?php

    $arr = file("file.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $keys = [];
    array_walk($arr, function(&$v, $k)use(&$keys){
       $keys[] = substr($v, 0, 3);
       $v = substr($v, 3);
    });     
    $arr = array_combine($keys, $arr);
    print_r($arr);
?>

输出:

Array
(
    [ABC] => Line, Number, One
    [DEF] => Number, Two, Line
    [GHI] => Three, Line, Number
)

您可以使用substr函数提取前3个字符,并将其用作数组的键,然后将字符串的其余部分存储为另一个数组,例如:

$file = "hw3.txt";
$f1 = fopen($file, 'r');
$array = array();
while (($line = fgets($f1)) !== false) {
    $key = substr($line, 0, 3);
    $val = substr($line, 3);
    $array[$key] = $val;
}