PHP中foreach循环仅返回单条记录,如何返回全部数组值?
问题:foreach循环内仅返回单条记录,如何返回所有数组值?
你遇到的问题很典型——每次循环里都重新创建了一个新的$array变量,直接覆盖了之前的数据,最后自然只返回最后一次循环的结果啦!
先看看你原来的代码:
function myfunction(){ $query ="SELECT * from tbl_data"; $stmt = $this->getConnection()->prepare($query); $stmt->execute(); foreach ($stmt->fetchAll() as $value) { //custom value $customval = 1; $array = array([ "ID" => $value['ID'], "name" => $value['name'], "staus" => $value['status'], "customval" => $customval, ]); } return $array; }
问题根源
- 你在
foreach循环内部每次都用$array = array([...])重新赋值,这意味着每循环一次,$array就被替换成只包含当前$value的新数组,之前的所有记录都会被丢弃。 - 最后返回的
$array自然只有最后一次循环生成的那条数据。
修复方案
只需要提前初始化一个空数组,然后在循环里用[]语法把每条新记录追加到数组末尾即可:
function myfunction(){ $query ="SELECT * from tbl_data"; $stmt = $this->getConnection()->prepare($query); $stmt->execute(); // 先初始化一个空数组,用来存储所有记录 $array = []; foreach ($stmt->fetchAll() as $value) { //custom value $customval = 1; // 将当前记录追加到数组末尾 $array[] = [ "ID" => $value['ID'], "name" => $value['name'], "status" => $value['status'], // 这里纠正了你拼写错误的"staus" "customval" => $customval, ]; } return $array; }
另外顺便提一句,你代码里的staus是拼写错误,建议改成status,避免后续出现不必要的字段匹配问题哦!
内容的提问来源于stack exchange,提问作者Rye
相关产品推荐
相关产品推荐

