通过引用调用PHP函数意外地执行

时间:2013-05-05 05:20:04

标签: php function pass-by-reference

Iwonder为什么下面的代码片段的输出为0(零)?任何人都可以澄清为什么下面的代码输出为零。

<?php
function a($number)
{
  return (b($number) * $number);
}

function b(&$number)
{
  ++$number;
}

echo a(5); // output 0(zero) ?
?>

2 个答案:

答案 0 :(得分:2)

您永远不会从函数中返回任何值,并且您尝试echo返回值。

function b(&$number)
{
    return ++$number;
}

请注意,对于通过引用获取其参数的函数,这是一个愚蠢的示例,因为您没有对原始值5的引用。这样的事情会更合适:

function b( &$number) {
    ++$number;
}

$num = 5;
b( $num);
echo $num; // Prints 6

答案 1 :(得分:0)

函数名称为b,但您正在调用...

此外,您正在回显一个不返回值的函数。这意味着您正在回显非初始化变量。

您必须返回一个值:

    return ++$number;

或直接回显变量:

    $number = 5;
    b($number);
    echo $number;