我一直在努力解决这个问题,但我只是大脑冻结了。
我有一个包含多行的文件,每行由“=”分隔成单独的数据:
// Example file. Syntax: <key>=<Value>
key1=value1
key1=value2
key1=value3
key2=value1
key2=value2
key3=value1
key3=value2
key3=value3
key3=value4
我需要将这个文件分解成单独的行,并将它们全部放入一个数组中,这样 key1 包含一个 value1、2、3 的数组,key2 有它的值,key3 有它的值,依此类推。有点像这样:
Array
(
[key1] => Array
(
[0] => value1
[1] => value2
[2] => value3
)
[key2] => Array
(
[0] => value1
[1] => value2
)
[key3] => Array
(
[0] => value1
[1] => value2
[2] => value3
[3] => value4
)
)
到目前为止,我有以下代码:
$loadFile = file('file.txt');
$returnArray = array();
foreach ($loadFile as $line) {
$startWith = substr(trim($line), 0, 2);
if (empty($line) || $startWith == '//') {
continue;
}
list($key, $value) = explode('=', $line);
$returnArray[$key] = $value;
}
return $returnArray;
然而,我得到的只是:
Array ( [key1] => value3 [key2] => value2 [key3] => value4 )
我也试过
$loadFile = file('file.txt');
$returnArray = array();
foreach ($loadFile as $line) {
$startWith = substr(trim($line), 0, 2);
if (empty($line) || $startWith == '//') {
continue;
}
$exp = explode('=', $line);
$returnArray[$exp[0]] = $exp[1];
}
return $returnArray;
这也给了我同样的结果。我还尝试了一个 array_merge,它只是将所有内容都推入一个以数值为键的数组中。
SMILET
函数式编程
扬帆大鱼