2010-12-30 3 views
0

Я пытаюсь устранить некоторые элементы массива, проверив некоторые другие данные профиля в базе данных, соответствующей идентификаторам пользователя.Игнорировать пустые итерации в массиве PHP

function filterSexMatches($sSex, $aMatchIds){ 
    foreach($aMatchIds as $iMatchId){ 
     $aMatches[] = $this->getOne("SELECT `ID` FROM `Profiles` WHERE `ID` = '{$iMatchId}' AND `Sex` != '{$sSex}'");   
    } 
    return $aMatches; 
} 

Это моя функция, но она возвращает пустое значение ID, когда Пол не соответствует и добавляет его в $aMatches массив.

Я хочу знать, как я могу изменить это, чтобы пропустить идентификатор пользователя, если поле «Поле» соответствует, чтобы оно не возвращало пустую итерацию.

ответ

1
function filterSexMatches($sSex, $aMatchIds){ 
    $aMatches = array(); 
    foreach($aMatchIds as $iMatchId){ 
     $data = $this->getOne("SELECT `ID` FROM `Profiles` WHERE `ID` = '{$iMatchId}' AND `Sex` != '{$sSex}'");   
     if (!empty($data)) { 
      $aMatches[] = $data; 
     } 
    } 
    return $aMatches; 
} 
+0

Спасибо, я не мог подумать ни на секунду. lol – tmartin314

+0

lol, проблем нет. – webbiedave

0

Лично я хотел бы использовать один запрос для получения всех профилей, а затем перебрать результат в php, сопоставить и добавить в пустой массив. Вместо выполнения одного запроса для каждого идентификатора.

Непонятно, как вы работаете в системе, но я попытаюсь дать пример.

$result = $this->getOne("SELECT * FROM Profiles WHERE ... "); 

$newArray = array(); 
foreach($result as $row) { 
    if($row->sex == $sSex) { 
     $newArray[] = $row; 
    } 
} 
return $newArray; 
+0

Возможно, это было бы лучше комментарий. – BoltClock

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