从PHP函数返回多个值

从PHP函数返回多个值,php,Php,为重复的问题道歉。使用函数从数据库返回多个值。我尝试执行代码,函数返回一个值,其中我需要id和name的所有值 数据库:id和name有9行。我的代码中有什么遗漏的吗 function readdata() { $sth = $db->execute('SELECT * FROM mynumbers m WHERE m.id>1 ORDER BY m.id ASC'); foreach ($sth as $s) { $object = new stdC

为重复的问题道歉。使用函数从数据库返回多个值。我尝试执行代码,函数返回一个值,其中我需要id和name的所有值

数据库:id和name有9行。我的代码中有什么遗漏的吗

function readdata() { 
    $sth = $db->execute('SELECT * FROM mynumbers m WHERE m.id>1 ORDER BY m.id ASC');
    foreach ($sth as $s) {
       $object = new stdClass();
       $object->id = $s->id;
       $object->name = $s->name;
       return $object;    
    }              
}

$rd = readdata();
echo $rd->id;
echo $rd->name;

您的foreach循环打算遍历数组$sth的所有值,但只返回第一个值

您可以返回$sth以获取整个数组,也可以构建一个新数组并附加到其中:

$ret = array();
foreach ($sth as $s) {
  ...
  $ret[] = $object;
  }
然后
返回$ret

您的foreach循环打算遍历数组$sth的所有值,但只返回第一个值

您可以返回$sth以获取整个数组,也可以构建一个新数组并附加到其中:

$ret = array();
foreach ($sth as $s) {
  ...
  $ret[] = $object;
  }
然后
返回$ret

可能是这样的:

function readdata() { 
    $sth = $db->execute('SELECT * FROM mynumbers m WHERE m.id>1 ORDER BY m.id ASC');
    $out = [];
    foreach ($sth as $s) {
       $object = new stdClass();
       $object->id = $s->id;
       $object->name = $s->name;
       $out[] =  $object;    
    } 
    return $out;             
}
$rd = readdata();
//and here
foreach($rd as $obj){
   echo $obj->id;
   echo $obj->name;
}

可能是这样的:

function readdata() { 
    $sth = $db->execute('SELECT * FROM mynumbers m WHERE m.id>1 ORDER BY m.id ASC');
    $out = [];
    foreach ($sth as $s) {
       $object = new stdClass();
       $object->id = $s->id;
       $object->name = $s->name;
       $out[] =  $object;    
    } 
    return $out;             
}
$rd = readdata();
//and here
foreach($rd as $obj){
   echo $obj->id;
   echo $obj->name;
}

这与其说是答案,不如说是建议。为什么要重新发明轮子?PDO已经能够返回类并将所有结果提取到数组中

函数readdataPDO$db:array { $sth=$db->prepare'SELECT*FROM mynumbers m其中m.id>1 ORDER BY m.id ASC'; $sth->execute; return$sth->fetchAllPDO::FETCH_类; } $objects=readdata$db; $objects现在是一个数组。每个元素都包含一个stdClass对象,每个列名都作为属性

foreach$objects作为$object{ echo$object->id,PHP\u EOL; echo$object->name,PHP\u EOL; }
这与其说是答案,不如说是建议。为什么要重新发明轮子?PDO已经能够返回类并将所有结果提取到数组中

函数readdataPDO$db:array { $sth=$db->prepare'SELECT*FROM mynumbers m其中m.id>1 ORDER BY m.id ASC'; $sth->execute; return$sth->fetchAllPDO::FETCH_类; } $objects=readdata$db; $objects现在是一个数组。每个元素都包含一个stdClass对象,每个列名都作为属性

foreach$objects作为$object{ echo$object->id,PHP\u EOL; echo$object->name,PHP\u EOL; }
你应该看看这个:你应该看看这个: