Я пишу приложение метафайлов файлов в php, и мне нужно искать файлы с несколькими тегами. Информация хранится в таблице mySQL с идентификатором fileId и tagID. Как я сделать это с помощью функции поиска в таблице для первого TagID, а затем возьмем пересечение полученного списка файлов с последовательными вызовами SQL для остальных тегов:Последовательные пересечения массивов в php
$files = $cfiles->searchFiles($owner,$tags[0]);
foreach($tags as $tag){
$temp = $cfiles->searchFiles($owner, $tag);
$files = array_intersect($files, $temp);
}
Проблема заключается в том, что array_intersect создает ассоциативный массив, т.е.
$ files = array ("id1", "id2", ... "idn");
становится
$ файлов = массив ("0" => "ID1", "1" => "ID2", ...
, когда я беру пересечение с самим собой. Проблема в том, , что на следующей итерации для следующего тега array_intersection терпит неудачу, потому что я затем пересекаю ассоциативный массив с неассоциативным массивом. Может кто-нибудь, пожалуйста, просветить меня?
Возможно, это возможно сделать в MySQL ... –
Не уверен, что array_intersect должен заботиться, являются ли массивы ассоциативными или нет. Какая неудача вы получаете? Если проблема в том, что вам нужны индексы, сохраненные и сопоставляемые, используйте array_intersect_assoc() – Kickstart