将文本分割为数组的键值对


Spliting text as key value pairs of array

我有一个如下的文本


问题第一这是第一个问题。1 ans


问题2这是第一个问题。2 .

问题3号
这是第一个问题。3答

我想把这些问题和答案保存在一个键值对数组中,即

$array  = array(
                'question no.1' => 'this is question no.1 ans'  
                 'question no.2' => 'this is question no.2 ans'
                 'question no.3' => 'this is question no.3 ans'
               );

我已经试过了。

我只是在问题的末尾保留$#和$?和每个答案的结尾,这样我就可以把文本分解成两个数组,并可以像下面这样组合两个数组。

没有问题。1 $#

这是第一个问题。1美元?

没有问题。2 $#

这是第一个问题。2美元?

没有问题。3 $ #

这是第一个问题。3美元?

$questions = explode('$#',$textfromdb);
$answer = explode('$?',$textfromdb);
$combines = array_combine($questions,$answer);

欢迎提出任何建议。

Thank you

问题和答案存储为字符串。因此,我们需要在出现新行('n)时将它们展开。

array_filter()用于过滤掉数组中的空白值。Array_values()只取出键为0、1、2…的值

接下来,我们需要遍历这个$filteredArray。如果您尝试print_r($filteredArray),您会发现偶数键包含问题,而奇数键包含答案。因此,我们相应地存储问题和答案。

最后,我们使用array_combine()来形成问题和答案的键值对。

 $array = explode("'n", $string);  // Explode the string when new line appears 
 $filteredArray = array_values(array_filter($array)); // Filtering out blank values and storing the values in $filteredArray 
 foreach ($filteredArray as $k => $arr) {
    if ($k %2 == 0) {             // Even keys 0, 2, 4... contain the questions
        $questions[] = $arr;
    } else {                      // Odd keys 1, 3, 5... contain the answers
        $answers[] = $arr;
    }
 }
$questionAnswers = array_combine($questions, $answers); // Converting questions-answers as key-value pairs

array_combine() -创建一个数组,一个数组存放键,另一个数组存放值

语法:

array_combine ( array $keys , array $values );

通过使用keys数组中的值作为键并使用values数组中的值作为相应的值来创建数组。

尝试保持问题作为一个单独的数组和答案作为一个单独的数组

<?php
// Question Array
$question = array('Question1','Question2','Question3');
//Answer Array
$answer = array('Answer1','Answer2','Answer3');
//array_combine()
$combined_array = array_combine($question, $answer);
print_r($combined_array);
?>
输出:

Array ( [Question1] => Answer1 [Question2] => Answer2 [Question3] => Answer3 )