Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将.txt文件内容读入php多维数组_Php_Arrays_Multidimensional Array_Text Files_Notepad - Fatal编程技术网

将.txt文件内容读入php多维数组

将.txt文件内容读入php多维数组,php,arrays,multidimensional-array,text-files,notepad,Php,Arrays,Multidimensional Array,Text Files,Notepad,我有一个包含如下内容的.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('fil

我有一个包含如下内容的.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>';
    
    $array=explode(“\n”,文件获取内容('file.txt'); $array=array_过滤器(array_映射('trim',$array)); $chunk\u array=array\u chunk($array,6); foreach($chunk\u数组作为$key=>$value){ $final_数组[$key]['question']=$value[0]; $final_数组[$key]['options']=array_切片($value,1,-1); $final_数组[$key]['answer']=end($value); } 回声'; 打印(最终数组); 回声';
    Alives answer给出了一个您可能可以使用的结果,但我认为关联数组可能是一个不错的选择

    我查看每一行,看看它是否有一个问题编号=>在带有问题编号和问题文本的数组中添加新项

    若第一个字符是字母,第二个是点,那个么它就是一个答案=>添加答案字母作为键,文本作为值

    如果上面没有,则是答案文本=>addkey,并将答案和值作为正确答案

    我使用“分解”来分割线。第三个参数说明要将字符串分成多少部分。
    使用“2”,它在第一个空格处分开,这意味着我将问题#作为数组中的第1项,将问题文本作为数组中的第2项


    显示来自
    echo''的当前输出;打印(数组)(在当前代码中)。还有你想要的实际预期结果。你的问题中有一个,而不是评论中有一个,总是一个问题,四个答案,一个正确吗?还是可以是一个是/否的问题?@Andreas总是一个问题,多个答案和一个正确的答案。无论如何,我可以将答案a-D排列成一个数组吗?非常感谢你昨天的帮助,脚本似乎没有处理我的文件,其中有60个问题,昨天它完全能够处理3个问题,您看到该文件有任何问题吗?问题是代码仅限于问题0-9。不接受两位数的问题。这里有一个修复程序,但我收到通知,但我没有时间或能力修复它,因为我现在正在我的手机上键入。该通知表明,在文本答案和字母之间有一个“答案”行没有空格。我看不到它,但它可能是som其他类型的空白。对不起,这是错误的链接这里是正确的:也找到了通知#24和31没有空间。我将代码改为在
    上爆炸,改为修剪。
    // $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);