2014-11-06 3 views
0

Я пишу приложение метафайлов файлов в 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 терпит неудачу, потому что я затем пересекаю ассоциативный массив с неассоциативным массивом. Может кто-нибудь, пожалуйста, просветить меня?

+2

Возможно, это возможно сделать в MySQL ... –

+0

Не уверен, что array_intersect должен заботиться, являются ли массивы ассоциативными или нет. Какая неудача вы получаете? Если проблема в том, что вам нужны индексы, сохраненные и сопоставляемые, используйте array_intersect_assoc() – Kickstart

ответ

0

Так получилось, что array_intersect не работает, если записи массивов сами являются массивами (как в моем случае). Использование array_uintersect() делает трюк.

Смежные вопросы