-2

以下のコード スニペットの出力が 0(ゼロ) なのはなぜですか? 以下のコード出力がゼロである理由を明確にしてください。

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

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

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

2 に答える 2

2

関数から値を返すことはなくecho、戻り値を取得しようとしています。

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

元の値への参照がないため、これは参照によってパラメーターを受け取る関数のばかげた例であることに注意してください5。次のようなものがより適切です。

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

$num = 5;
b( $num);
echo $num; // Prints 6
于 2013-05-05T05:21:29.530 に答える
0

関数名は b ですが、a を呼び出しています...

また、値を返さない関数をエコーし​​ています。これは、初期化されていない変数をエコーし​​ていることを意味します。

次のいずれかの値を返す必要があります。

    return ++$number;

または変数を直接エコーします。

    $number = 5;
    b($number);
    echo $number;
于 2013-05-05T05:25:16.533 に答える