我有一个如下文件,需要将其转换为数组:
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;
}