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

PHP变量赋值异常:array_push导致变量被覆盖为1的问题排查

问题根源:错用了array_push()的返回值

哈哈,这个坑我刚学PHP的时候也踩过!你遇到的问题核心在于:array_push()并不返回修改后的数组,它返回的是添加元素后数组的总元素个数。

你看代码里这行关键错误:

$p_id = array_push($p_id, "$party->id");

第一次循环时,$p_id是空数组,添加一个元素后,array_push()返回1(此时数组元素数是1),你把这个整数赋值给了$p_id——这下原本的数组直接被覆盖成了整数1!如果循环继续执行,下一次调用array_push()时,PHP会自动把整数1转换成数组[1],添加新元素后返回2,$p_id就会变成2,以此类推。这就是为啥你看到的$p_id总是数字,而非预期的ID数组。

两种修正方法

方法1:直接调用array_push(),不要赋值返回值

去掉赋值操作,让array_push()直接修改原数组:

array_push($p_id, "$party->id");

方法2:用PHP更简洁的数组追加语法(推荐)

PHP里给数组追加元素最常用的方式是直接用方括号,比array_push()更直观,还能彻底避免这种返回值的坑:

$p_id[] = "$party->id";
修正后的完整代码
$p_id = array();
foreach($opp->participants as $party) {
    echo "ID value from data:" . var_dump($party->id) . "<br>";
    echo "Base array:" . var_dump($p_id) . "<br>";
    $p_uuid = array();
    $p_assignment_id = array();
    // 用方括号直接追加元素
    $p_id[] = "$party->id";
    echo "Dump array result:" . var_dump($p_id) . "<br>";
}

这样修改后,$p_id会一直保持数组类型,每次循环都把新的ID追加进去,最终就能得到你预期的Array(295,298,301)这类结果啦。

内容的提问来源于stack exchange,提问作者Mugluck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:41:14