動的 Web ページ PHP での参照の使用に関する注意事項
友人が以前の投稿でこの質問について言及しましたが、PHP を初めて使用するより多くの友人を助けることを願って、ここで簡単に要約します。
PHP 参照 (つまり、変数、関数、オブジェクトなどの前にアンパサンドを追加する) は高度なトピックであり、PHP 参照を正しく理解することが重要です。パフォーマンスへの影響、およびエラーがプログラム エラーにつながる可能性があることを理解する必要があります。
多くの人は、PHP の参照が C のポインターと同じであると誤解しています。実際には、それらは異なり、大きく異なります。配列転送プロセス中に明示的に宣言する必要のない C 言語のポインターを除き、他のポイントは * を使用して定義する必要があります。ただし、PHP のアドレスへのポインター (ポインターと同様) 関数は、はい、PHP の参照は「コピーオンライト」の原則を採用しています。つまり、書き込み操作が発生しない限り、同じアドレスを指す変数やオブジェクトはコピーされません。たとえば、次のコード:
$a = array('a','c'...'n');
$b = $a;
Ifプログラムはここでのみ実行されます。$b と $b は同じですが、C とは異なり、$a と $b は異なるメモリ空間を占有しますが、これが php と c の違いです。 $b=&$a と書かれているのは、$b が $a を指していることを意味します。zend はすでに参照を実装しており、zend は、いつこの方法で処理すべきか、いつ処理すべきでないかを判断するのに非常に賢明です。このようにして。
後で次のコードを書き続ける場合は、関数を追加し、パラメーターを参照渡しして、配列のサイズを出力します。
function printArray(&$arr) // 参照渡し
{
print(count($arr));
}
printArray($a);
上記のコードでは、$a 配列を参照によって printArray() 関数に渡します。zend エンジンは、printArray() によって $a が変更される可能性があると判断し、$b に対して $a を自動的に生成します。データをコピーし、ストレージ用のメモリを再申請します。これが、前述した「コピーオンライト」の概念です。
上記のコードを次のように変更すると:
function printArray($arr) //値転送
{
print(count($arr));
}
} printArray($a);
上記のコードは、$a 値を printArray() に直接渡します。このため、コピーオンライトは行われません。 。
上記の 2 行のコードの実行効率をテストできます。たとえば、ループを 1000 回外に追加して、実行にかかる時間を確認します。その結果、参照の使用が間違っていることがわかります。パフォーマンスが 30% 以上低下する原因となります。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
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 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています
