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

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

我有一个如下所示的文件,我需要将其转换成一个数组:

ABCLine, Number, One
DEFNumber, Two, Line
GHIThree, Line, Number

我可以获取每一行并将其转换为数组的值,但我需要做的是获取前 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(). Then walk through your array with array_walk() 将您的文件放入一个数组中,并将每个值的前 3 个字符添加到 $keys 数组中。之后,您可以从值中删除前 3 个字符。

最后 array_combine() 您的 $keys 数组 $arr,例如

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