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

时间:2016-09-10 09:34:22

标签: php arrays key

我的文字如下

  

问题1   这是第1号问题

     问题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);

任何建议都表示赞赏。

谢谢

2 个答案:

答案 0 :(得分:1)

问题和答案存储为字符串。因此,当出现新行(\ n)时,我们需要explode

array_filter()用于过滤掉数组中的空白值。 array_values()仅使用0,1,2 ...

键取出值

接下来,我们需要遍历此print_r($filteredArray)。如果您尝试 $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()来形成问题和答案的键值对。

{{1}}

答案 1 :(得分:0)

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 )