将 .txt 文件内容读入 php 多维数组
read .txt file content into php multi dimensional array
我有一个 .txt 文件,内容如下
联邦首都区阿布贾有 -- -- -- -- -- 区议会
A. 4
B.6
C.7
D.2
答案:B
联邦首都特区与-- -- -- -- -- -- -- 植被带相关联
A. 萨赫勒稀树草原
B.雨林
C. 几内亚稀树草原
D. 苏丹大草原
答案:C
导致 FCT 人口不断增加的最重要因素是
A. 高出生率
B. 移民
C.死亡率
D. 人口普查
答案:B
我很想将文件内容读入多维数组,这样我就可以得到每个问题、每个问题的答案和正确答案。
我试过这个:-
$array=explode("\n", file_get_contents('file.txt'));
print_r($array);
但它没有给我想要的..
Try This..
$array=explode("\n", file_get_contents('file.txt'));
$array = array_filter(array_map('trim',$array));
$chunk_array = array_chunk($array, 6);
foreach($chunk_array as $key => $value){
$final_array[$key]['question'] = $value[0];
$final_array[$key]['options'] = array_slice($value, 1, -1);
$final_array[$key]['answer'] = end($value);
}
echo '<pre>';
print_r($final_array);
echo '</pre>';
Alives 答案给出了您可能可以使用的结果,但我认为关联数组可能是可行的方法。
我查看每一行,看看它是否有问题编号 => 在数组中添加新项目,其中包含问题编号和问题文本。
如果第一个字符是字母,第二个字符是点,则为答案 => 添加答案字母作为键,文本作为值。
如果是上面的 none 就是答案文本 => 添加带有 ANSWER 的键和值作为正确答案。
我用explode来分割线。第三个参数告诉将字符串分成多少部分。
对于“2”,它首先拆分 space,这意味着我将问题# 作为数组中的第 1 项,将问题文本作为第 2 项。
// $str = file_get_contents("text.txt");
$str = "1. Abuja, the Federal Capital Territory has -- -- -- -- -- area Council
A. 4
B. 6
C. 7
D. 2
ANSWER: B
2. The Federal Capital Territory is associated with-- -- -- -- -- -- -- vegetation belt
A. Sahel savanna
B. Rainforest
C. Guinea savanna
D. Sudan savanna
ANSWER: C
3. The most significant factor responsible for the ever increasing population of FCT is
A. High birth rate
B. Immigration
C. Death rate
D. CENSUS
ANSWER: B";
$arr = explode("\n", $str);
$res=[];
Foreach($arr as $line){
If($line != ""){
If(is_numeric($line[0])){
Preg_match("/^\d+/", $line, $num);
$res[$num[0]] =["QUESTION" =>explode(" ", $line,2)[1]];
$q = $num[0];
}Else if(ctype_alpha($line[0]) && $line[1] == "."){
$res[$q][$line[0]] = explode(" ", $line, 2)[1];
}Else{
$res[$q]["ANSWER"] = trim(explode(":", $line, 2)[1]);
}
}
}
Var_dump($res);
我有一个 .txt 文件,内容如下
联邦首都区阿布贾有 -- -- -- -- -- 区议会
A. 4
B.6
C.7
D.2
答案:B联邦首都特区与-- -- -- -- -- -- -- 植被带相关联
A. 萨赫勒稀树草原
B.雨林
C. 几内亚稀树草原
D. 苏丹大草原
答案:C导致 FCT 人口不断增加的最重要因素是
A. 高出生率
B. 移民
C.死亡率
D. 人口普查
答案:B
我很想将文件内容读入多维数组,这样我就可以得到每个问题、每个问题的答案和正确答案。
我试过这个:-
$array=explode("\n", file_get_contents('file.txt'));
print_r($array);
但它没有给我想要的..
Try This..
$array=explode("\n", file_get_contents('file.txt'));
$array = array_filter(array_map('trim',$array));
$chunk_array = array_chunk($array, 6);
foreach($chunk_array as $key => $value){
$final_array[$key]['question'] = $value[0];
$final_array[$key]['options'] = array_slice($value, 1, -1);
$final_array[$key]['answer'] = end($value);
}
echo '<pre>';
print_r($final_array);
echo '</pre>';
Alives 答案给出了您可能可以使用的结果,但我认为关联数组可能是可行的方法。
我查看每一行,看看它是否有问题编号 => 在数组中添加新项目,其中包含问题编号和问题文本。
如果第一个字符是字母,第二个字符是点,则为答案 => 添加答案字母作为键,文本作为值。
如果是上面的 none 就是答案文本 => 添加带有 ANSWER 的键和值作为正确答案。
我用explode来分割线。第三个参数告诉将字符串分成多少部分。
对于“2”,它首先拆分 space,这意味着我将问题# 作为数组中的第 1 项,将问题文本作为第 2 项。
// $str = file_get_contents("text.txt");
$str = "1. Abuja, the Federal Capital Territory has -- -- -- -- -- area Council
A. 4
B. 6
C. 7
D. 2
ANSWER: B
2. The Federal Capital Territory is associated with-- -- -- -- -- -- -- vegetation belt
A. Sahel savanna
B. Rainforest
C. Guinea savanna
D. Sudan savanna
ANSWER: C
3. The most significant factor responsible for the ever increasing population of FCT is
A. High birth rate
B. Immigration
C. Death rate
D. CENSUS
ANSWER: B";
$arr = explode("\n", $str);
$res=[];
Foreach($arr as $line){
If($line != ""){
If(is_numeric($line[0])){
Preg_match("/^\d+/", $line, $num);
$res[$num[0]] =["QUESTION" =>explode(" ", $line,2)[1]];
$q = $num[0];
}Else if(ctype_alpha($line[0]) && $line[1] == "."){
$res[$q][$line[0]] = explode(" ", $line, 2)[1];
}Else{
$res[$q]["ANSWER"] = trim(explode(":", $line, 2)[1]);
}
}
}
Var_dump($res);