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

PHP调用array_push报参数需为array却传入string,如何得到预期返回

错误原因

array_push()函数用法不符合规范:该函数要求第一个入参必须是待操作的数组对象,第二个及之后的入参才是需要追加到数组中的值。你直接将字符串类型的$row['name']作为第一个入参传入,参数类型不匹配,因此触发了该报错。

另外结合你给出的预期返回结果判断,你根本不需要使用array_push()函数:你需要实现的是给$aa数组新增键为国家iso2编码、值为对应国家名称的元素,直接对数组指定键赋值即可。

修正后代码

$data['status'] = 'success';
$data['msg'] = 'OK';
$aa = array();
if (!empty($countries)) {
    foreach ($countries as $row) {
        $b = $row['iso2'];
        $aa[$b] = $row['name'];
    }
}
$data['result'] = $aa;

return setJSON($data);

输出结果

修改后返回的JSON完全符合你的预期:

{
    "status": "success",
    "msg": "OK",
    "result": {
        "DE": "Germany"
    }
}

补充说明(后续需要用到array_push的场景参考)

如果你确实需要往数组末尾追加元素,正确写法如下:

// 写法1:使用array_push
array_push($target_array, $value1, $value2);
// 写法2:直接用数组追加语法,性能比array_push更优
$target_array[] = $value1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:06:05