2012-01-12 3 views
2

следующих работ (массив заполняется другим запросом MySQL):MySQL в() многомерном массиве

$array=(1,4,5,6,8); 
$query=SELECT * FROM table WHERE Id IN(".implode(",",$array)." 

Но как я могу сделать следующее ?:

$array=(
array('Id'=>1, 'Detail1'=>$row['Detail1'], 'Detail2'=>$row['Detail2']), 
array('Id'=>4, 'Detail1'=>$row['Detail1'], 'Detail2'=>$row['Detail2']), 
array('Id'=>5, 'Detail1'=>$row['Detail1'], 'Detail2'=>$row['Detail2']), 
array('Id'=>6, 'Detail1'=>$row['Detail1'], 'Detail2'=>$row['Detail2']), 
array('Id'=>8, 'Detail1'=>$row['Detail1'], 'Detail2'=>$row['Detail2']), 
); 
$query=SELECT * FROM table WHERE Id IN(".implode(",",$array[]['Id'])." 

Так что мне нужно получить все id, как я могу это сделать в этом многомерном массиве?

Спасибо!

ответ

6

Я бы просто сделать что-то вроде этого:

$id_list = array(); 

foreach($array as $item) { 
$id_list[] = $item['Id']; 
} 

$query = "SELECT * FROM table WHERE Id IN(".implode(',',$id_list).")"; 
1

Другой вариант:

$list = array_reduce($id_list,function($total,$cur_value){ 
    if(!is_null($total)) $total .= ','; 
    return $total.$cur_value['id']; 
    }); 
$query = "SELECT * FROM table WHERE Id IN(".$list.")"; 
Смежные вопросы