我试图在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
答案 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?在这种情况下,我认为你必须添加一些条件。