2014-09-23 76 views
-1

目前我有一些問題從類的方法返回數組。這是我的小測試:從類方法返回數組

這裏是我的方法:

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; 

回答

1

你函數名錶示getUser(),但您試圖撥打getResponce() -

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

我覺得你得到的答案:)

UPDATE 在你調用參數數組,你只是保持array('thisiscol!')

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

getUser()功能裏面,你是在試圖訪問

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

我看到$params[1]缺失。

ALSO

嘗試在getResponce()

+0

很棒!檢查我的編輯:) – 2014-09-23 06:18:20

+0

添加更新。檢查:) – 2014-09-23 06:22:29

0

加入return爲了更好地概述我也建議你的循環之前聲明$行。

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

沒有運氣先生:/相同'null'值 – 2014-09-23 06:19:17

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; 
    } 

} 
+0

這也返回一個'null'值,但我不知道這個,謝謝! – 2014-09-23 06:21:15

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; 
+0

那裏。謝謝你,先生。 – 2014-09-23 06:21:58