目前我遇到一些从类'方法返回数组的问题。这是我的小测试:
这是我的方法:
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;
答案 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;
}
}