如何将数组传递给函数,并使用数组返回结果

Joe*_*ssi 19 php

所以我试图学习如何通过函数传递数组,这样我就可以解决PHP无法返回多个值的问题.到目前为止还没有能够得到任何工作,但这是我最好的尝试.有谁可以指出我哪里出错了?

function foo($array)
{
    $array[3]=$array[0]+$array[1]+$array[2];
    return $array;
}

$waffles[0]=1;
$waffles[1]=2;
$waffles[2]=3;
foo($waffles);

echo $waffles[3];
Run Code Online (Sandbox Code Playgroud)

为了澄清:我希望能够将多个变量传递给函数,执行某些操作,然后将多个变量返回,同时保持它们分离.这只是一个例子,我试图将其作为无法从数组中返回多个变量的解决方案

Soa*_*Box 34

你似乎在寻找传递引用,这样做会使你的函数看起来像这样(注意&符号):

function foo(&$array)
{
    $array[3]=$array[0]+$array[1]+$array[2];
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以将函数的返回值赋给变量:

function foo($array)
{
    $array[3]=$array[0]+$array[1]+$array[2];
    return $array;
}

$waffles = foo($waffles)
Run Code Online (Sandbox Code Playgroud)


Tor*_*amo 10

您正在通过复制将数组传递给函数.只有对象在PHP中通过引用传递,并且数组不是对象.这是你做的(注意&)

function foo(&$arr) { # note the &
  $arr[3] = $arr[0]+$arr[1]+$arr[2];
}
$waffles = array(1,2,3);
foo($waffles);
echo $waffles[3]; # prints 6
Run Code Online (Sandbox Code Playgroud)

除此之外,我不确定你为什么会那样做那种特殊的操作.为什么不返回总和而不是将其分配给新的数组元素?


小智 5

function foo(Array $array)
{
     return $array;
}
Run Code Online (Sandbox Code Playgroud)