ホームページ バックエンド開発 PHPチュートリアル PHP を学ぶ (4) PHP 関数をステップバイステップで学ぶ 補足 2_PHP チュートリアル

PHP を学ぶ (4) PHP 関数をステップバイステップで学ぶ 補足 2_PHP チュートリアル

Jul 21, 2016 pm 03:40 PM
php ステップ 範囲 関数 勉強 親切 解決する 質問

1. スコープの問題を解決します

前のセクションでは、PHP の関数のスコープについて説明しました。クラスだけでは問題を説明できない場合は、この記事のスコープの例の方がわかりやすいかもしれません。

では、PHP 関数で外部変数にアクセスするにはどうすればよいでしょうか?

PHP にはグローバル スコープと呼ばれる概念があります。つまり、関数を使用しない場合 (将来クラスの概念が登場する予定です)、作成した変数にはページ上のどこからでもアクセスできます。では、関数本体の問題をどのように解決すればよいでしょうか?

グローバルキーワードを使用できます:

  <SPAN style="COLOR: blue"><?</SPAN><SPAN style="COLOR: maroon">php 
    </SPAN>$<SPAN style="COLOR: red">name</SPAN><SPAN style="COLOR: blue">="kym"</SPAN>;
    <SPAN style="COLOR: red">function Test</SPAN>()
    {
      <SPAN style="COLOR: red">global </SPAN>$<SPAN style="COLOR: red">name</SPAN>;
      <SPAN style="COLOR: red">echo</SPAN>($<SPAN style="COLOR: red">name</SPAN>);
    }
    <SPAN style="COLOR: red">Test</SPAN>();
  <SPAN style="COLOR: blue">?>
</SPAN>
ログイン後にコピー

この場合、$name 変数を再作成することなく、グローバル変数 $name への参照を取得するのと同じです。

PHP マニュアルには次のような言葉があります: グローバル変数を使用することは、$GLOBALS 変数に変数への参照を作成することと同じです。次に、このセマンティクスを模倣して、次のようなコードを書くことができます:

  <SPAN style="COLOR: blue"><?</SPAN><SPAN style="COLOR: maroon">php 
    </SPAN>$<SPAN style="COLOR: red">name</SPAN><SPAN style="COLOR: blue">="kym"</SPAN>;
    <SPAN style="COLOR: red">function Test</SPAN>()
    {
      $<SPAN style="COLOR: red">temp</SPAN><SPAN style="COLOR: blue">=&$GLOBALS["</SPAN><SPAN style="COLOR: red">name</SPAN><SPAN style="COLOR: blue">"];
      echo($temp);
    }
    Test();
  ?>
</SPAN>
ログイン後にコピー

実際、これら 2 つは同等のコードです。このように変数を使用するのは面倒に思えますが、実際にはこれにより多くの副作用が回避されます。たとえば、Java と C# はオブジェクト指向言語ですが、PHP ではすべてが 1 つのページ、または複数のページに収まります。この方法を使用すると、関数の副作用 (偶発的な変更) が発生しやすくなります。

2. デフォルトパラメータ

この概念を初めて聞いたのはおそらく C++ でした。C# を学んだ後は、この概念に触れたことはありませんでしたが、今でもこの機能がとても気に入っています。

これにより、関数に対して面倒なオーバーロードされた関数を大量に記述する必要がなくなります。

最も単純な例を書いてください:

  <SPAN style="COLOR: blue"><?</SPAN><SPAN style="COLOR: maroon">php 
    </SPAN><SPAN style="COLOR: red">function Test</SPAN>($<SPAN style="COLOR: red">name</SPAN><SPAN style="COLOR: blue">="kym"</SPAN>)
    {
      <SPAN style="COLOR: red">echo</SPAN>($<SPAN style="COLOR: red">name</SPAN>);
    }
    <SPAN style="COLOR: red">Test</SPAN>();
    <SPAN style="COLOR: red">Test</SPAN>(<SPAN style="COLOR: blue">"others"</SPAN>);
  <SPAN style="COLOR: blue">?>
</SPAN>
ログイン後にコピー

オーバーロードされた関数を記述する必要はもうありませんか?

ただし、ここで注意すべきことが 2 つあります:

A. パラメータのデフォルト値を設定する場合、最も単純な定数のみを設定でき、複雑な式を含めることはできません。

B. デフォルト値が必要なパラメータは最後に配置する必要があります。これは、C# の変数パラメーターに似ています。

3. 可変パラメータ

C# には、変数パラメーターと呼ばれる概念があります。簡単な例を書いてみましょう:

<SPAN style="COLOR: blue">protected void </SPAN>LinkButton1_Click(<SPAN style="COLOR: blue">object </SPAN>sender, <SPAN style="COLOR: #2b91af">EventArgs </SPAN>e)
{
  Response.Write(GetSum(1, 2, 3, 4, 5));
}
<SPAN style="COLOR: blue">public int </SPAN>GetSum(<SPAN style="COLOR: blue">params int</SPAN>[] elements)
{
  <SPAN style="COLOR: blue">int </SPAN>sum = 0;
  <SPAN style="COLOR: blue">for </SPAN>(<SPAN style="COLOR: blue">int </SPAN>i = 0; i < elements.Length; i++)
  {
    sum += elements[i];
  }
  <SPAN style="COLOR: blue">return </SPAN>sum;
}
ログイン後にコピー

例を書く前に、まず変数パラメーターに関連する 3 つの関数を紹介します。

func_get_args() は関数のすべてのパラメータの配列を返します

func_get_arg() はパラメータから特定の引数を返します

func_num_args() はパラメータの数を返します。

それでは、C# バージョンに対応する PHP バージョンを書きましょう。

りー

4. 変数関数

なぜこの名前に変換する必要があるのか​​わかりません。実際には変数の名前に基づいて対応する関数を呼び出します。

以下に示すように、

は JS のこの eval に非常によく似ています:

  <SPAN style="COLOR: blue"><?</SPAN><SPAN style="COLOR: maroon">php 
    </SPAN><SPAN style="COLOR: red">function GetSum</SPAN>()
    {
      <SPAN style="COLOR: red">if</SPAN>(<SPAN style="COLOR: red">func_num_args</SPAN>()<SPAN style="COLOR: blue">=</SPAN>=0)
      {
        <SPAN style="COLOR: red">return </SPAN>0;
      }
      $<SPAN style="COLOR: red">sum</SPAN><SPAN style="COLOR: blue">=0;
      </SPAN><SPAN style="COLOR: red">for</SPAN>($<SPAN style="COLOR: red">i</SPAN><SPAN style="COLOR: blue">=0;$i<</SPAN><SPAN style="COLOR: maroon">func_num_args</SPAN>();$<SPAN style="COLOR: red">i</SPAN>++)
      {
        $<SPAN style="COLOR: red">sum</SPAN>+<SPAN style="COLOR: blue">=func_get_arg($i);
      </SPAN>}
      <SPAN style="COLOR: red">return </SPAN>$<SPAN style="COLOR: red">sum</SPAN>;  
    }
    <SPAN style="COLOR: red">echo</SPAN>(<SPAN style="COLOR: red">GetSum</SPAN>(1,2,3,4));
  ?<SPAN style="COLOR: blue">>
</SPAN>
ログイン後にコピー

これは、関数名を渡して、対応する関数を実行します。 PHP でも、実際には同じであり、より単純です。

りー

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/321306.html技術記事 1. スコープの問題を解決する 前のセクションでは、PHP の関数のスコープの問題について説明しました。クラスだけでは問題を説明できない場合は、この記事のスコープの例の方が説得力があるかもしれません...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

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

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

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

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

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

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

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

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

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

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

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

See all articles