PHP グローバル変数の設定解除の問題の詳細な分析_PHP チュートリアル
PHP の未設定グローバル変数は、実際に使用されているローカル変数を破壊することしかできず、グローバル変数の目的を達成することはできません。以下でこの問題を詳しく解決してみましょう。お役に立てれば幸いです。
PHP 言語の一部の関数は初心者にとって文字通り理解するのが難しいため、この知識を習得するには実際のコーディングの経験をまとめる必要があります。今日紹介したいのは、PHP の unset グローバル変数の使用時に遭遇するいくつかの問題です。
PHPにはunsetという変数を解放するステートメントがあります(PHP4からunsetは関数ではなくステートメントになりました)数日前にunsetを使用した際に問題があったので、unsetの問題を以下にまとめました。 。 PHP マニュアルをよく読んでいる場合は、この記事を読む必要はありません。この記事は、マニュアルに注意を払わない学生向けです。
最初に強調すべきことは、PHP unset グローバル変数は PHP では関数ではないため、戻り値がなく、使用時に unset の戻り値を判断に使用することはできません。 。
次に、関数内で PHP の unset グローバル変数はローカル変数のみを破壊できますが、グローバル変数は破壊できません
global $foo;
unset($foo);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>返される結果は
bar です
なぜこれが起こっているのでしょうか?その理由は、PHP の unset グローバル変数は関数内のローカル変数のみを破壊できるためです。プログラム内のグローバル変数を破棄する必要がある場合はどうすればよいでしょうか? $GLOBALS 配列を使用して実装するのも非常に簡単です。以下の例を見てください:
コードをコピーします
コードは次のとおりです:
foo();
var_dump($bar);
?>
PHP unset() 関数は変数を破棄するために使用されますが、実際の実行中にメモリ内のデータを解放できないことがよくあります。手術。この記事では、関連する問題の解決策を詳しく説明します。
PHP言語を学ぶとき、各関数の使い方は通常曖昧で、一つ一つ習得するのは困難です。しかし、私たちはこれらの機能をマスターする必要があります。ここではPHPのunset()関数の使い方を詳しく紹介します。
以下は、PHP unset() 関数に関する重要なポイントです: (以下はすべて Windows 環境、PHP 2.5.9 でテストされています)
この関数は、変数値が 256 バイトを超えている場合にのみ機能します。 long メモリを解放します値を指す変数(値を指す参照変数など)が全て破壊された場合のみアドレスを解放します(1の判定も行う必要があります)サンプルコード引数を与えます以下:
コードをコピーします
コードは次のとおりです:
$e =memory_get_usage();
echo ' メモリを解放します: '.($s-$e );
//出力は 272 ですが、上記のテスト変数を $test=str_repeat("1",255) に変更すると、出力は 0 になります。変数の値が 256 未満の場合、メモリはbe release
?>
なぜ 256 ではなく 272 なのかについては、内部でどのように処理されているかはわかりません。
コードは次のとおりです:
//出力は 256 個の 1 です。上記を unset($p) に変更すると、さらに悪いことに、echo $test は 256 1
?> を直接表示します。これは、メモリ内に $a に割り当てられた値がまだ存在していることを意味します。 unset() ではメモリを解放する効果が得られないことがわかります。
ただし、上記のコードに $test=null を追加するか、unset($p) を追加すると、メモリを解放する効果を得ることができます。PHP unset() 関数のテスト コードは次のとおりです。
null への変数の代入。メソッド:
コードをコピーします
コードは次のとおりです:
< ?php
$test = str_repeat("1",256);
$p = &$test;
$s =memory_get_usage();
$test = null;
unset($test);この文の順序を変更して $test=null にすると、結果は異なります
$e =memory_get_usage();
echo ' メモリを解放します: '.($s-$e);
//出力は 272 です
var_dump($p); //出力は NULL です
?> アドレス内の値を指すすべての変数を破棄するメソッド:
コードをコピーします:
unset( $p);
unset($test);
$e =memory_get_usage();
echo ' メモリを解放します: '.($s-$e); /出力は 272
?>
この PHP へ unset() 関数のデモが完了しました。
www.bkjia.com

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
