从我的数组中过滤我的对象会产生一个空数组

时间:2015-02-20 13:17:05

标签: php arrays

这是我的功能,我首先使用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')));
    }  
}

2 个答案:

答案 0 :(得分:0)

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

else{$contact="";}

你还想做什么呢?

答案 1 :(得分:0)

摆脱

else {$contact = "";}

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

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

$contactlijst = $this->ophalencontact();