【问题标题】:How to add strings to an array inside a php function如何将字符串添加到php函数内的数组中
【发布时间】:2021-10-31 03:17:57
【问题描述】:

我有这个不起作用的函数。
$b 是一个外部字符串,应该与应该返回一组字符串的 $a 数组绑定。

$a=array('this','is');
function chkEdt($a,$b) {
 $a[]=$b;
};
print_r($a);

结果 -> 数组();

为什么?

【问题讨论】:

  • 如果你想让函数改变传递给它的参数的值,你需要pass by reference

标签: php arrays function


【解决方案1】:

您需要将其设为参考参数。

function chkEdt(&$a,$b) {
    $a[]=$b;
};

那么在函数中对$a 的任何更改都会影响用作参数的数组变量。

【讨论】:

  • 谢谢Barmar,我会研究参考参数。
【解决方案2】:

您的示例从未真正调用 chkEdt 函数,并且该函数从不返回任何内容。

除此之外,变量在函数内部和外部具有不同的作用域——即使它们共享一个名称,它们也被认为是不同的变量,因为其中一个在函数内部。阅读https://php.net/manual/en/language.variables.scope.php了解更多详情。

你可以像Barmar's answer那样通过引用传递变量,或者你可以让函数返回一个值,然后将函数外部的$a重新分配给函数返回的值——像这样:

$a = array('this','is');

function chkEdt($a,$b) {
 $a[] = $b;
 return $a;
};

$a = chkEdt($a, "a");
print_r($a);

现场演示:http://sandbox.onlinephpfunctions.com/code/00d19028b3909ca415b81e93c26a6ede9188c743

为了澄清差异,您可以在函数中使用不同的变量名重新编写函数,并获得相同的结果:

$a = array('this','is');

function chkEdt($z,$b) {
 $z[] = $b;
 return $z;
};

$a = chkEdt($a, "a");
print_r($a);

【讨论】:

    猜你喜欢
    • 2011-04-03
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 2021-12-30
    • 2017-01-31
    • 1970-01-01
    • 2011-06-07
    相关资源
    最近更新 更多