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

PHP多维数组元素添加问题:array_push参数为null报错求助

问题分析与解决

首先,咱们来拆解你遇到的两个核心问题:

  1. array_push() 参数为null的警告:当$vessel_fcm_new和$vessel_fcm_old相等时,第一个if块不会执行,$data变量根本没被初始化,此时如果进入第二个if块调用array_push,自然会报错——因为$data是null,不是合法数组。
  2. 输出里的null值:那些既不满足第一个条件也不满足第二个条件的行,$data未被定义,直接执行$data_return[] = $data就会把null塞进结果数组里。

修复方案

核心思路是在每次循环开始时初始化$data为空数组,确保后续的数组操作都有合法的数组对象;另外可以选择跳过空数组的添加,避免结果里出现无用的空元素。

修改后的代码如下:

$insertquery->bind_result($tracking_type, $tracking_change_date, $vessel_fcm_new, $vessel_fcm_old, $vessel_hull_id_new, $vessel_hull_id_old, $vessel_name_new, $vessel_name_old, $vessel_length_new, $vessel_length_old, $vessel_manufacturer_new, $vessel_manufacturer_old, $vessel_manufacturer_id_new, $vessel_manufacturer_id_old, $vessel_year_new, $vessel_year_old, $vessel_value_new, $vessel_value_old, $owner_id_new, $owner_id_old, $loss_payee_id_new, $loss_payee_id_old, $policy_id_new, $policy_id_old, $policy_start_date_new, $policy_start_date_old, $policy_end_date_new, $policy_end_date_old, $vessel_fcm, $vessel_hull_id, $vessel_name, $vessel_manufacturer_id);

while ($insertquery->fetch()) {
    // 每次循环初始化$data为空数组,从根源避免未定义的情况
    $data = [];

    if ($vessel_fcm_new != $vessel_fcm_old) {
        // 直接追加元素,写法更直观
        $data[] = $vessel_fcm_new;
        $data[] = $vessel_fcm_old;
    }
    if ($vessel_name_new != $vessel_name_old) {
        // 这里用array_push也完全没问题,两种写法效果一致
        array_push($data, $vessel_name_new, $vessel_name_old);
    }

    // 可选:如果$data不为空,再加入结果数组,过滤无变更的行
    if (!empty($data)) {
        $data_return[] = $data;
    }
}

echo json_encode($data_return);

关键改动说明

  • 循环内开头初始化$data = []:保证无论后续条件是否满足,$data都是一个合法的数组,彻底解决array_push的警告问题。
  • 灵活选择元素添加方式:直接用$data[]或者array_push都能安全操作数组,选你习惯的写法即可。
  • 添加!empty($data)判断:过滤掉没有任何变更的行,避免结果数组里出现空数组或者null,让输出完全符合你期望的[[element1], [element2], ...]格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:42:03