忽略PHP数组中的空迭代

时间:2010-12-30 16:32:01

标签: php

我正在尝试通过检查数据库中与用户ID匹配的其他配置文件信息来消除数组中的某些项目。

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

这是我的函数,但当Sex不匹配时返回一个空id值并将其添加到$aMatches数组。

如果Sex字段匹配,我想知道如何更改此选项以跳过用户ID,因此它不会返回空迭代。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

我个人会使用单个查询获取所有配置文件,然后在php中迭代结果,匹配并添加到空数组。而不是为每个id执行单个查询。

不完全确定你的系统是如何运作的,但我会尝试给出前。

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

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