我有以下情况
我有2个arrys
以下是答案数组
Array (
[0] => Array (
[id] => 4e28258263d2c4
[answer] => Study Accounting
[question_id_fk] => 4e28258262d100
[correct] => 0
[result_text] => Thats a right answer
[order] => 1
)
[1] => Array (
[id] => 4e28258266d896
[answer] => New York
[question_id_fk] => 4e28258265b752
[correct] => 0
[score] => 0.00
[result_text] =>
[order] => 1
)
[2] => Array (
[id] => 4e282582683870
[answer] => Yes
[question_id_fk] => 4e282582674ba0
[correct] => 0
[score] => 0.00
[hot_answer] => 0
[hot_email] =>
[ordering] => 1
[result_text] =>
[order] => 1
)
[3] => Array (
[id] => 4e282582698c23
[answer] => 2
[question_id_fk] => 4e282582689e80
[correct] => 0
[score] => 0.00
[hot_answer] => 0
[hot_email] =>
[ordering] => 1
[result_text] =>
[order] => 1
)
[4] => Array (
[id] => 4e2825826af072
[answer] => 1
[question_id_fk] => 4e2825826a0371
[correct] => 0
[score] => 0.00
[hot_answer] => 0
[hot_email] =>
[ordering] => 1
[result_text] =>
[order] => 1
)
[5] => Array (
[id] => 4e2825826d9638
[answer] => NYC
[question_id_fk] => 4e2825826ca998
[correct] => 0
[score] => 0.00
[hot_answer] => 0
[hot_email] =>
[ordering] => 1
[result_text] =>
[order] => 1
)
[6] => Array (
[id] => 4e2825826d9137
[answer] => Dallas
[question_id_fk] => 4e2825826ca998
[correct] => 0
[score] => 0.00
[hot_answer] => 0
[hot_email] =>
[ordering] => 1
[result_text] =>
[order] => 1 )
)
这是问题清单
Array (
[0] => 4e28258262d100
[1] => 4e282582649464
[2] => 4e28258265b752
[3] => 4e282582674ba0
[4] => 4e282582689e80 )
foreach($questionList as $question){
// I want to Get answers in array above which
// has $question.question_id = question_id_fk . One question can have multiple
// answers
//Print Each question Id
//Print answer , result_text and correct values from all answers found from AnswerList
}
如何从数组中搜索问题ID的所有答案。我需要获得答案的“正确”和“result_text”值。
答案 0 :(得分:2)
$matches = array_filter ($answerList, function ($answer) use ($question) {
return $question['id'] == $answer['question_id_fk'];
});
现在您可以访问每个条目。
如果你想将结构减少到一组原始值(你正在寻找的值),你可以做类似的事情
$correct = array_reduce(
$matches,
function ($result, $current) {
$result[] = $current['correct'];
return $result;
},
array()
);
我建议您重新排序$answerList
$answerListOrderedByQuestionId = array_reduce (
$answerList,
function ($result, $answer) {
if (!array_key_exists($answer['question_id_fk'], $result))
$result[$answer['question_id_fk']] = array();
$result[$answer['question_id_fk']][] = $answer;
return $result;
},
array()
);
现在应该是一个关联数组,其关键字为question-id。现在,您可以轻松访问给定问题的每个答案。
答案 1 :(得分:1)
foreach ($questionList as $question)
{
if ($question['id'] == /*id we want to match*/)
{
// $question is now your match
// $question['correct']
// $queestion['result_text']
}
}
如果我理解你的评论:
// go through each aquestion
foreach ($questionList as $question)
{
// for each question, we want the answer associated with it
foreach ($answerList as $answer)
{
// make sure the ids match up
if ($answer['question_id_fk'] == $question)
{
// $question & $answer is now your pair
}
}
}
答案 2 :(得分:-1)
该示例仅显示应答列表数组?
foreach ($questionList as $question)
{
// for each question, look through the answers...
foreach ($answerlist as $answer)
if ($answer['question_id_fk'] == $question['id'])
{
// $answer matches the current question
}
}
}
另一方面,您可以将answerlist处理到一个由question_id_fk索引的数组中,而不是在列表中搜索每个问题。