为了账号安全,请及时绑定邮箱和手机立即绑定

php 将文件拆分为 $key=>$value 对,具有重复的键

php 将文件拆分为 $key=>$value 对,具有重复的键

PHP
一只斗牛犬 2023-04-21 15:19:50
我一直在努力解决这个问题,但我只是大脑冻结了。我有一个包含多行的文件,每行由“=”分隔成单独的数据:// Example file. Syntax: <key>=<Value>key1=value1key1=value2key1=value3key2=value1key2=value2key3=value1key3=value2key3=value3key3=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,它只是将所有内容都推入一个以数值为键的数组中。
查看完整描述

3 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

我认为您的问题是您覆盖了密钥的值。

$returnArray[$key] = $value;

所以你想要的是将你的值附加到一个以$key为父级的子数组。

$returnArray[$key][] = $value;

随着[]你追加$value到底层数组。


查看完整回答
反对 回复 2023-04-21
?
函数式编程

TA贡献1807条经验 获得超9个赞

为了好玩,只需将它们转换为ini文件的数组语法并解析它:


$result = parse_ini_string(str_replace('=', '[]=', file_get_contents('file.txt')));

更有趣的是,把它们变成一个查询字符串并解析它:


parse_str(str_replace('=', '[]=', implode('&', file('file.txt'))), $result);

两者都产生:


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

        )

)


查看完整回答
反对 回复 2023-04-21
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

你应该将你的值附加到 $returnArray[$key] 的子数组中

array_push($returnArray[$key],$value) ;


查看完整回答
反对 回复 2023-04-21
  • 3 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信