从文件读取连续行到key =>值数组

时间:2016-06-15 14:56:12

标签: php arrays

我正在尝试将用户/传递txt文件转换为数组,我尝试使用foreach,explode,reg_split执行此操作,但没有以正确的方式工作。

还应跳过空行...

示例文本文件:

username1
password1
username2
password2

username3
password4

示例数组:

array(
   $username1 => $password1,
   $username2 => $password2
)

3 个答案:

答案 0 :(得分:3)

从连续的行创建一对数组,然后将键列与值列组合在一起:

$chunks = array_chunk(
    file('userpass.txt', FILE_SKIP_EMPTY_LINES|FILE_IGNORE_NEW_LINES),
    2
);
$users = array_combine(
    array_column($chunks, 0),
    array_column($chunks, 1)
);

<强>解释

$chunks是一个数组数组:每个内部数组都有两个元素:#0是用户名(第一行),#1是密码(第二行)。使用file跳过空行并删除尾随的新行可以使这段代码变得简单,但不能防止子弹。

然后通过获取所有内部数组中的所有用户名(索引$users)并将它们指向所有密码(索引0)来生成

1

您可以通过$chunks上的循环完成相同操作。但是,我更喜欢这种方法,因为所有循环都在引擎内部处理,在那里它的性能稍微高一些。

答案 1 :(得分:1)

将文件拆分为一个数组,然后将它们组合成一个带键值对的新数组

$file = file("usernames.txt", FILE_SKIP_EMPTY_LINES|FILE_IGNORE_NEW_LINES);
$array = [];

for($i = 0; $i < count($file) - 1; $i++){
  $array[$file[$i]] = $file[$i + 1];
}

答案 2 :(得分:-3)

我必须考虑一下,但我知道你可以使用php的file()方法将文件读入数组。

$var = file("myFile.txt", FILE_SKIP_EMPTY_LINES);