I have following situation
I have 2 arrys
Following is answers array
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 )
)
Here is Question List
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
}
How do I search all answers for a question id from array . I need to get "correct" and "result_text" values for an answer .
$matches = array_filter ($answerList, function ($answer) use ($question) {
return $question['id'] == $answer['question_id_fk'];
});
Now you can access every single entry.
If you want to reduce the structures to an array of primtive values (the values you are looking for) you ca do something like
$correct = array_reduce(
$matches,
function ($result, $current) {
$result[] = $current['correct'];
return $result;
},
array()
);
I would suggest to reorder your $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()
);
This should now be an associative array with the key the question-id. Now you can easily access every single answer for a given question.