-1
$newid = 100;
$cin = 0;
function new_id() {
    $cin++;
    if ($cin >= 3) {
        $cin = 0;
        $newid++;
    }
    return $newid;
}
echo new_id();

new_id() は何も返していません。どうしたの?

4

1 に答える 1

5

変数のスコープについて学ぶ必要があります。パラメータとして渡さない限り (または のような悪意のあるものを使用しない限り$newid)$cinは利用できません:new_idglobal

マニュアルの完璧な例:

<?php
$a = 1; /* global scope */ 

function test()
{ 
    echo $a; /* reference to local scope variable */ 
} 

test();
?>

echo ステートメントは $a 変数のローカル バージョンを参照し、このスコープ内の値が割り当てられていないため、このスクリプトは出力を生成しません。

あなたのコードについては:

$newid = 100;
$cin = 0;
function new_id($newid, $cin) {
    $cin++;
    if ($cin >= 3) {
        $cin = 0;
        $newid++;
    }
    return $newid;
}
于 2013-02-07T02:26:26.867 に答える