循环遍历两个数组并匹配值

时间:2015-04-03 16:28:48

标签: php html

我试图在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> ";
}}}

当通过网络浏览器回显这些值时,我得到:

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

虽然看起来应该更像:

name 1
message 1

name 2
message 2

3 个答案:

答案 0 :(得分: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数组是多维的情况下完成。

答案 1 :(得分: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";
}

答案 2 :(得分:0)

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

数组$ getMessageName和$ getMessage是否总是具有相同的长度,$ getMessageName中的每个位置对应于$ getMessage中的相同位置($ getMessageName [0] - &gt; getMessage [0]等)? 如果是这种情况,那么pala_的答案应该有效(尽管我认为如果你只想打印这些数据太多了,可以通过简单的迭代轻松完成没有array_combine)

如果没有,那么$ getMessage是否有任何信息属于哪个项目来自$ getMessageName?在这种情况下,我认为你必须添加一些条件。