PHP で静的変数を削除する方法: [$temp = null] など、再定義することで削除できます。 unset() 関数はローカル変数のみを破棄するため、静的変数を削除するために unset() 関数を使用することはできません。
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 サイトの他の関連記事を参照してください。