将文件中的数据读入关联数组

时间:2014-04-08 19:00:49

标签: php arrays associative

我有一个文件read.txt,上面有这样的记录

pulp_fiction
Pulp Fiction
jurassic_park
Jurassic Park
inception
Inception

我想在quest.php

中将这些文件内容读取到这样的关联数组中
<?php
 $quest ["pulp_fiction"] = "Pulp Fiction";
 $quest ["jurassic_park"] = "Jurassic Park";
 $quest ["inception"] = "Inception";

这是打开文件以在quest.php中写入的代码我需要数组部分的帮助。 THKS

<?php
$myFile = "read.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
$assoc_array = array();
$my_array = explode("\n", $theData);
foreach($my_array as $line)
{
    $tmp = explode("\n", $line);
    $assoc_array[$tmp[0]] = $tmp[1];
}
fclose($fh);

// well the op wants the results to be in $quest
$quest = $assoc_array;
?>

我将此部分代码保存为quest.php并在quiz.php中调用但是当我尝试将图像标题与实际标题匹配时,没有任何内容填充。

3 个答案:

答案 0 :(得分:1)

可能是一种光滑的方式,但这是我的第一个想法:

$lines = file("read.txt", FILE_IGNORE_NEW_LINES);
$pairs = array_chunk($lines, 2);

foreach($pairs as $array) {
    $quest[$array[0]] = $array[1];
}

需要一些var和错误检查。

答案 1 :(得分:1)

这是我的解决方案:

<?php
preg_match_all('/^(.*)\n(.*)/m', file_get_contents('read.txt'), $items);
$quest = array_combine($items[1], $items[2]);

在这里,我们使用preg_match的正则表达式匹配行的内容,然后使用换行符,然后使用该行的内容,这样可以为我们提供两个数组,一个内容为偶数线条,一条有奇数线。

一个稍微强大的版本,它将检查仅包含小写字母数字字符和下划线的“关键”行:

<?php
preg_match_all('/^([a-z_]+)\n(.*)/m', file_get_contents('lists.txt'), $match);
$quest = array_combine($match[1], $match[2]);

答案 2 :(得分:1)

试试这段代码,我希望有这个帮助。

$lines = explode("\n", file_get_contents('file.txt'));
$quest = array();
for($i=0;$i<count($lines);$i+=2)
{
   $quest[$lines[$i]] = $lines[$i+1];
}