从类方法返回数组

时间:2014-09-23 06:13:47

标签: php oop pdo

目前我遇到一些从类'方法返回数组的问题。这是我的小测试:

这是我的方法:

private function getUser($uid,$set,$params){
        switch($set){
            case 'dvar':
                $col = $params[0];
                $needle = $params[1];

                $res = $this->dbh->prepare("SELECT col,val FROM acl_users_dvars WHERE uid=:uid");
                $res->bindParam(':uid', $uid);
                $res->execute();
                foreach($res->fetchAll(PDO::FETCH_ASSOC) as $k=>$v){
                    $rows[$k]=$v;
                }
                return($rows);
            break;
        }

    }

现在,vardump直接位于return $rows;上方会导致:

Array
(
    [0] => Array
        (
            [col] => thisiscol!
            [val] => this...is.my.VARRRRRRRRRRRRRRRRR
        )

    [1] => Array
        (
            [col] => thisiscol2!
            [val] => this is my bar
        )

)

但是,在页面上我初始化类并调用方法:

$user = array(
    '5',
    'dvar',
    array('thisiscol!')
);
$tOb = $test->getResponce('get_user',$user);
var_dump($tOb);

我只是回复:

NULL

修改

如上一个答案所述,对不起,我完全不知道了:以下是我的getResponce方法的部分内容:

public function getResponce($do_what, $parameters){
        switch(strtolower($do_what)){
                case 'create_user':
                    self::createUser($parameters[0],$parameters[1]);
                break;
                case 'remove_user':
                    self::remUser($parameters[0]);
                break;
                case 'set_user':
                    self::setUser($parameters[0],$parameters[1],$parameters[2]);
                break;
                case 'get_user':
                    self::getUser($parameters[0],$parameters[1],$parameters[2]);
                break;

4 个答案:

答案 0 :(得分:1)

您的功能名称为getUser(),但您试图致电getResponce() -

$user = array(
    '5',
    'dvar',
    array('thisiscol!')
);
$tOb = $test->getResponce('get_user',$user);
var_dump($tOb);

我认为你得到了答案:)

<强>更新 在你的call params数组中,你只是保留array('thisiscol!')

$user = array(
    '5',
    'dvar',
    array('thisiscol!')
);

但是在getUser()函数中,您正在尝试访问

            $col = $params[0];
            $needle = $params[1];

我看到$params[1]丢失了。

同时

尝试在return

中添加getResponce()

答案 1 :(得分:1)

您的“getResponce”不会转发“getUser”方法的返回值。

public function getResponce($do_what, $parameters){
        switch(strtolower($do_what)){
                case 'create_user':
                    return self::createUser($parameters[0],$parameters[1]);
                break;
                case 'remove_user':
                    return self::remUser($parameters[0]);
                break;
                case 'set_user':
                    return self::setUser($parameters[0],$parameters[1],$parameters[2]);
                break;
                case 'get_user':
                    return self::getUser($parameters[0],$parameters[1],$parameters[2]);
                break;

答案 2 :(得分:0)

为了更好的概述,我还建议在循环之前声明$ row。

$res->execute();
$rows = array();
foreach($res->fetchAll(PDO::FETCH_ASSOC) as $k=>$v){
  $rows[$k]=$v;
}
return($rows);

答案 3 :(得分:0)

您只需要这样一行:$rows = $res->fetchAll(PDO::FETCH_ASSOC)

 private function getUser($uid,$set,$params){
      switch($set){
          case 'dvar':
            $col = $params[0];
            $needle = $params[1];

            $res = $this->dbh->prepare("SELECT col,val FROM acl_users_dvars WHERE uid=:uid");
            $res->bindParam(':uid', $uid);
            $res->execute();
            $rows = $res->fetchAll(PDO::FETCH_ASSOC)
            return $rows;
        break;
     }

 }