如何将文件转换为关联数组?并使用前 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;
}
我有一个如下所示的文件,我需要将其转换成一个数组:
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;
}