2015-04-03 94 views
0

我通过在php两个数组试图环和答案从输入匹配在一起的HTML表单遍历两个数组和值相匹配

foreach ($getMessageName as $eachMessageName){ 
    echo $eachMessageName . "</br> "; 
    foreach ($getMessage as $eachMessage) {     
     echo $eachMessage . " </br> "; 
     $splitMessage = explode(" ", $eachMessage); 
     foreach ($splitMessage as $sM){ 
      echo $counter . " </br> " ; 
      $counter ++; 
      //echo $sM . " </br> "; 
}}} 

当值通过Web浏览器,我得到附和道:

name 1 
message 1 
message 2 
name 2 
message 1 
message 2 

虽然它应该更像:

name 1 
message 1 

name 2 
message 2 

回答

0

使用array_combine($keys, $values)你可以将你的两个数组合并成一个单一的关联数组,这使得进一步的处理变得更加简单。像这样:

<?php 
     $questions = array ('1+1', '2+2', '3+3'); 
     $answers = array (2, 4, 6); 
     $combined = array_combine($questions, $answers); 
     foreach($combined as $question => $answer) 
     { 
       print "{$question} = {$answer}\n"; 
     } 
?> 

具有这种输出:

1+1 = 2 
2+2 = 4 
3+3 = 6 

这也可以做在$values阵列是多维的。

0

准备持有您的输出一多维数组:

foreach ($getMessageName as $eachMessageName) 
{ 
    $array[++$counter] = array('name' => $eachMessageName, 'message' => ''); 

     foreach ($getMessage as $eachMessage) 
     { 
       $splitMessage = explode(" ", $eachMessage); 
       foreach ($splitMessage as $sM){ 
        $array[$counter]['messages'][] = $eachMessage; 
       } 
     } 
} 

然后,你可以用一个循环打印

foreach ($array as $counter => $line) 
{ 
    echo $counter . ' ' . $line['name'] . ' ' . implode(', ', $line['messages']) . "\n"; 
} 
0

你得到这样的结果,因为你只打印所有所有消息的消息名。我认为你提供了较少的信息来解决这个问题。

数组$ getMessageName和$ getMessage的长度是否相同,并且$ getMessageName的每个位置对应于$ getMessage($ getMessageName [0] - > getMessage [0]等)中的相同位置? 如果是这种情况,那么pala_的答案应该工作(虽然我认为如果你只是想打印这些数据太多了,并且可以通过简单的迭代轻松完成而不需要array_combine)

如果不是那么$ getMessage有任何信息哪些项目属于$ getMessageName中的哪个项目?在这种情况下,我认为你将不得不添加一些条件。