我有一个数组:
$quizzes = array();
$Quiz = array(
'quiz_id' => $quiz_id,
'correct' => $correctAnswers
);
$quizzes[] = $Quiz;
$quizzes
是一个数组,其中包含许多名为Quiz
的测验,而这些测验又有$Quiz['quiz_id'] and $Quiz['correct']
。现在我要做的是从$quizzes
中的测验列表中选择一个特定的测验,其中quiz_id = 1。
如果存在这样的测验,我想回复测验被发现。如果不存在具有此ID的$ Quiz,则回显没有测验。
我想出的一个简单的解决方案就是做一个foreach循环。
foreach($quizzes as $Quiz) if($Quiz['quiz_id'] == 1) {} else {}
但是,由于我有超过1个测验,它会返回else语句的次数与$Quiz['quiz_id'] != 1
多次一样多次。
答案 0 :(得分:3)
将数组(例如$quizzes[ $quiz_id ] = $Quiz;
)编入索引可以直接转到数组中的该项。
所以请使用现有的
行$quizzes[] = $Quiz;
并将其更改为
$quizzes[ $quiz_id ] = $Quiz;
然后你可以使用
if( isset( $quizzes[ $quiz_id ] ) )
{
echo 'found the quiz!';
}
else
{
echo 'no quiz found';
}
其中$quiz_id
是您要查找的测验的ID
答案 1 :(得分:1)
$id = 1;
array_filter($quizzes, function($v) use($id) {return $v['quid_id'] == $id;});