ホームページ  >  記事  >  バックエンド開発  >  PHPで静的変数を削除する方法

PHPで静的変数を削除する方法

王林
王林オリジナル
2020-09-27 17:38:373167ブラウズ

PHP で静的変数を削除する方法: [$temp = null] など、再定義することで削除できます。 unset() 関数はローカル変数のみを破棄するため、静的変数を削除するために unset() 関数を使用することはできません。

PHPで静的変数を削除する方法

PHP は静的変数を設定します。この静的変数を破棄する必要がある場合は、注意する必要があります。unset($tmp を使用する場合) ) 削除するには、静的変数を設定する必要がある再帰関数などの 1 つが見つかり、この再帰関数を foreach() で使用する必要があります。値をクリアする必要があります。 unset() を使用しても効果がない場合は、情報を調べた結果、$tmp=null を使用する必要があることがわかりました。

(推奨チュートリアル: php ビデオ チュートリアル)

データ プロトタイプは配列です;

$data=[
    '1'=>[
        'pid'=>0,
        'title'=>'test1'
    ],
    '2'=>[
        'pid'=>1,
        'title'=>'test2'
    ],
    '3'=>[
        'pid'=>2,
        'title'=>'test3'
    ],
];

Use unset():

function getBreadNav($data,$id,$mark=1){
    static $tmp;
    if($mark==1){
        unset();
    }
    if(isset($data[$id])){
        $tmpresult['title']=$data[$id]['title'];
        $tmp[]=$tmpresult;
        getBreadNav($data,$data[$id]['pid'],$mark=2);
    }
    return $tmp;
}

null を変数に割り当てます:

function getBreadNav($data,$id,$mark=1){
    static $tmp;
    if($mark==1){
        $tmp=null;
    }
    if(isset($data[$id])){
        $tmpresult['title']=$data[$id]['title'];
        $tmp[]=$tmpresult;
        getBreadNav($data,$data[$id]['pid'],$mark=2);
    }
    return $tmp;
}

これがループの始まりです:

for($i=0;$i<5;$i++){
    getBreadNav($data,3);
}

マニュアルには明確な指示があることに注意してください: If you unset() a static関数内の変数、その後、関数内のこの静的変数は破棄されます。ただし、この関数が再度呼び出されると、この静的変数は最後に破棄される前の値に復元されます。したがって、ここで行う必要があるのは、それをクリアして null を割り当てることです。

注:

関数内の unset() の動作は、破棄する変数のタイプによって異なります。

関数内でグローバル変数を unset() した場合、ローカル変数のみが破棄され、呼び出し環境内の変数は unset() を呼び出す前と同じ値を維持します。

静的変数の登録を解除したい場合は、再定義することによってのみクリアできます。

関連する推奨事項: php トレーニング

以上がPHPで静的変数を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。