2013-05-03 4 views
0

У меня есть массив, и я хочу, чтобы найти все значения, где correct => true:Поиск конкретного значения в массиве

$quiz_array = array (
      'question1' => array (
         'q1a1' => array (
            'correct' => FALSE, 
            'answer' => 'false answer1' 
         ), 
         'q1a2' => array (
            'correct' => FALSE, 
            'answer' => 'false answer2' 
         ), 
         'q1a3' => array (
            'correct' => FALSE, 
            'answer' => 'false answer3' 
         ),     
         'q1a4' => array (
            'correct' => TRUE, 
            'answer' => 'correct answer' 
         ) 
      ) 
    ); 

Я хочу, чтобы сделать поиск, где он будет возвращать q1a4 в этом случае, так как correct => TRUE. Я пытаюсь использовать in_array и array_search, но не повезло. Какие-либо предложения?

+1

'foreach' ....... – zerkms

+0

возможно дубликат [Поиск значений в многомерных массивах] (http://stackoverflow.com/questions/10811908/find-values-in-multidimensional-arrays) – JJJ

ответ

0

Вот ваш ответ,

foreach($quiz_array as $key=> $value) { 
    foreach($quiz_array[$key] as $key=> $value) { 
    if($value["correct"]) { 
     echo $key ."<br>"; 
    } 
    } 
} 
+0

Спасибо, это то, что мне нужно – Edgar

0
foreach ($quiz_array as $key => $value) { 
if (strpos($value, '<name of value you want to search>') !== false) { 
    $new_key = $key; 
    break; 
    } 
} 
0

Вы могли бы сделать что-то вроде этого:

$correctAnswers = array(); 
foreach ($quiz_array as $question => $answers) { 
    $correctAnswers[$question] = array_filter($answers, function($v) { 
    return $v['correct']; 
    }); 
} 
var_dump($correctAnswers); // array('question1' => array('q1a4' => array('correct' => true, 'answer' => 'correct answer'))); 

Если вы хотите вернуть только правильные ответы key (например q1a41.), Вы можете сделать:

$correctAnswers = array(); 
foreach ($quiz_array as $question => $answers) { 
    foreach ($answers as $k => $a) { 
    if ($a['correct']) { 
     $correctAnswers[$question] = $k; 
    } 
    } 
} 
var_dump($correctAnswers); // array('question1' => 'q1a4'); 
0
function correct($array) { 
    return $array('correct'); 
} 

$results= array(); 
foreach($quiz_array as $key => $value) { 
    $correct= array_filter($value, 'correct'); 
    $results[$key]= $correct; 
} 

print_r($results); 
Смежные вопросы