PHP:通过引用传递参数did';不起作用


PHP: Passing parameter by reference didn't work

我正在创建一个通过引用传递参数的函数。我只是无法获得此代码的返回值,我需要您的帮助。

function wow ($id, &$a, &$b)
    {
        $detail[0][0] = 1;
        $detail[0][1] = 2;
        $detail[0][2] = 3;
        $detail[0][3] = 4;
        $detail[1][0] = -1;
        $detail[1][1] = -2;
        $detail[1][2] = -3;
        $detail[1][3] = -4;
        for($i=0; $i<=$id; $i++)
        if ($detail[$i][3] == 4)
        {
            $a = $detail[$i][0];
            $a = $detail[$i][1];
            $a = $detail[$i][2];
            $a = $detail[$i][3];
        }
        else
        {
            $b = $detail[$i][0];
            $b = $detail[$i][1];
            $b = $detail[$i][2];
            $b = $detail[$i][3];
        }
    }

这是我调用函数的方式。

$a = $b = null;
    wow(1, $a, $b);
    echo $a[0]." ".$a[1]." ".$a[2]." ".$a[3]." ".$a[4]." ".$b[0]." ".$b[1]." ".$b[2]." ".$b[3]." ".$b[4]." ";

我认为您错过了数组的工作方式:

    for($i=0; $i<=$id; $i++)
    if ($detail[$i][3] == 4)
    {
        $a = $detail[$i][0];
        $a = $detail[$i][1];
        $a = $detail[$i][2];
        $a = $detail[$i][3];
    }

这些语句中的每一个都在覆盖前一个。

试试这样的东西:

    for($i=0; $i<=$id; $i++)
    if ($detail[$i][3] == 4)
    {
        $a = $detail[$i];
    }

也就是说,您正在将第一个数组中的整个数组复制到$a中。

此外,您将$a$b都设置为null,但在函数中只设置其中一个或另一个——您将始终返回至少一个警告,告诉您要回显的null变量。