从数组中筛选出我的对象会得到一个空数组


Filtering my objects out of my array gives an empty array

这是我的函数,我第一次使用ophalencontact()在这些联系人被放入我的类中之后,为了从我的DB中检索联系人,我将它们放在一个数组中(因为1个"klant"可以有多个联系人)

现在我想把我的联系人放入我的"klant(客户)"中,并使用过滤方法

$contact= array();
foreach($contactlijst as $CT ){
    if($key['idklanten']==$CT->getklantID()){
        array_push($contact,$CT);
    }
    else{$contact="";}
}

我想可能是这个功能出了问题,有人能帮我吗?代码不会出现调试错误,但当我在网站上呈现它时,它会给我一个空数组。

提前谢谢。

function ophalen(){
    $this->ophalencontact();
    $dbh = new pdo( 'mysql:host=localhost;dbname=nextlead_spreker','nextlead_spreker', 'xxxxxx',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    try {$sth = $dbh->prepare("select * from klanten;");
        $sth->execute();
        $row = $sth->fetchAll(PDO::FETCH_ASSOC);
        $lijst =array();

        foreach($row as $key){
            $contact= array();
            foreach($contactlijst as $CT ){
                if($key['idklanten']==$CT->getklantID()){
                    array_push($contact,$CT);
                }
                else{$contact="";}
            }
            $I= new Klanten($key['idklanten'],$key['naam'],$key['adres'],$key['postcode'],$key['stad'],$contact);
            array_push($lijst,$I); 

        }
        return $lijst;
    }
    catch(PDOException $ex){
        print_r($ex);
        die(json_encode(array('outcome' => false, 'message' => 'Unable to connect')));
    }  
}
function ophalencontact(){
    $dbh = new pdo( 'mysql:host=localhost;dbname=nextlead_spreker',      'nextlead_spreker', 'xxxxxxx',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    try {$sth = $dbh->prepare("select * from contactpersoonklant;");
        $sth->execute();
        $row = $sth->fetchAll(PDO::FETCH_ASSOC);
        $contactlijst =array();
        foreach($row as $key){
            $CT= new klantContact($key['idcontactpersoonklant'],$key['Voornaam'],$key['tussenvoegsel'],$key['achternaam'],$key['tel'],$key['email'],$key['klanten_idklanten']);
            array_push($contactlijst,$CT); 
            print_r($contactlijst);
        }
        return $contactlijst;
    }
    catch(PDOException $ex){
        print_r($ex);
        die(json_encode(array('outcome' => false, 'message' => 'Unable to connect')));
    }  
}

摆脱

else {$contact = "";}

您正在将所有匹配的元素添加到数组中,但每次遇到不匹配的元素时,都会将数组替换为空字符串。您应该忽略不匹配的元素。

另一个问题是:您从未在ophalen函数中设置$contactlijst,因此foreach($contactlist as $CT)循环不会执行任何操作(如果启用错误报告,您应该会收到关于未定义变量的通知)。您从$this->ophalencontact返回它,但ophalen对返回值没有任何作用。所以第一行应该是:

$contactlijst = $this->ophalencontact();

您在此处将$contact设置为空字符串:

else{$contact="";}

你想在其他方面做什么?