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

PHP函数内如何给数组追加字符串?代码运行输出空数组是什么原因

问题原因

你遇到的错误是两个常见的PHP函数使用问题共同导致的:

  • 你仅定义了chkEdt自定义函数,没有主动调用执行,函数内的数组追加逻辑从头到尾都没有运行
  • PHP函数参数默认是传值调用,就算你正常传入外部的$a变量,函数内修改的只是参数的局部副本,不会同步修改外部的原数组变量

补充:你贴出的这段代码直接运行的话,print_r($a)正常会输出Array ( [0] => this [1] => is ),如果实际输出为空,需要排查你的运行环境是否有其他代码提前覆盖了$a变量,和当前贴出的逻辑无关。

正确实现方案

有两种常用的实现方式可以满足需求:

方式1:函数返回修改后的数组,外部接收赋值

这种方式耦合度最低,更推荐使用:

$a = array('this','is');
$b = '待追加的字符串';
function chkEdt($a, $b) {
    $a[] = $b;
    return $a; // 将修改后的数组作为返回值输出
}
// 调用函数,用返回值覆盖原$a变量
$a = chkEdt($a, $b);
print_r($a);

输出结果:

Array
(
    [0] => this
    [1] => is
    [2] => 待追加的字符串
)

方式2:参数使用引用传值,直接修改原数组

在参数前加&符号标记为引用传递,函数内修改参数会直接同步到外部传入的原变量:

$a = array('this','is');
$b = '待追加的字符串';
function chkEdt(&$a, $b) { // $a前加&表示引用传值
    $a[] = $b;
}
// 直接调用即可,不需要接收返回值
chkEdt($a, $b);
print_r($a);

输出结果和方式1完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:36:02