You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:23:47