phpの関数

  1. phpの関数


    1. 関数の定義

       php では、関数の定義は function で始めます。関数は引数を指定できます。
      <?php
      
      //値渡し引数
      function testfunc($a) {
        $a = $a * 10;
        return $a;
      }
      
        $x = 5;
        print "関数の値 " . testfunc($x) . "<BR>";
        print "変数の値 " . $x . "<BR>";
      
      ?>

       これは、$a を引数とする関数の例で、値を10倍して返します。このとき、関数で 変数 $a を変更しても、呼びだし側で引数とした変数 $x の値は変化しません。上記プログラムでは次のようになります。
      関数の値 50
      変数の値 5

    2. 参照型引数

       php では、引数の前に & を付記することで参照型の引数とすることができます。この場合、参照型引数として呼び出し側でしていした変数は、関数の中で値を変更することができます(これは C++ の機能になります)。
      <?php
      //参照引数
      function testfunc(&$a) {
        $a = $a * 10;
        return $a;
      }
      
        $x = 5;
        print "関数の値 " . testfunc($x) . "<BR>";
        print "変数の値 " . $x . "<BR>";
      
      ?>

       上記の場合、次のような結果になります。
      関数の値 50
      変数の値 50

  2. 既定義の関数


    1. 参照

      phpでは多くの定義済みの関数を利用することができます。一覧は次のページの「関数レファレンス」を参照してください。
          http://www.php.net/manual/ja/index.php

    2. ファイル関数

       ファイル関数を利用した例を紹介します。関数はC言語と同様です。fopen() でファイル名を指定して$handle の名前でファイルを開きます。例の場合、ファイル users.txt は php と同じフォルダに配置します。fscanf( ) で $handle から タブ(\t)で区切られた行を $userinf に読みます。list() で二つの文字列を $name と $tel に分割します。print でこれを表示します。ファイルが尽きると $userinfo が空になり、繰り返しを停止します。

      <?php
      //ファイル読み取り
      $handle = fopen("users.txt", "r");
      while ($userinfo = fscanf($handle, "%s\t%s\t")) {
          list ($name, $tel) = $userinfo;
          print "名前:".$name." 電話:".$tel."<BR>";
      }
      fclose($handle);
      ?> 

      実行する前に、名前と電話番号を タブ で区切ったファイルを作成しておきます。表示は次のようになります。
      名前:ito 電話:23-4567
      名前:kano 電話:31-8712
      名前:oya 電話:31-2389

  3. 配列の利用


    1. 配列の利用

       php は配列を利用できます。以下は、配列の定義とその利用例です。count() は配列の要素の数をかえします。
      <?php
      
        $area = array("北海道", "東北", "関東", "北陸", "中部", "東海");
      
        for($i=0;$i<count($area);$i++){
          print $area[$i] . "<BR>";
        }
      
      ?>
      実行例です。
      北海道
      東北
      関東
      北陸
      中部
      東海

       配列は、リスト形式で記憶しているため、
       $area[]="近畿"
      で、配列末尾への追加ができます。

    2. 連想配列

       配列の番号の替わりに、「文字列」を利用した記録が可能です。文字列を「キー」、配列を「連想記憶」と呼ぶことがあります。以下は、番号と連想記憶を併用した例です。
      <?php
      
        $syain[0]["番号"] = "A-001";
        $syain[0]["氏名"] = "鈴木 太郎";
        $syain[0]["所属"] = "総務課";
        $syain[0]["性別"] = "男";
        $syain[0]["勤続年数"] = 12;
      
        print $syain[0]["番号"] . "<BR>";
        print $syain[0]["氏名"] . "<BR>";
        print $syain[0]["所属"] . "<BR>";
        print $syain[0]["性別"] . "<BR>";
        print $syain[0]["勤続年数"] . "<BR>";
      
      ?>

      連想記憶は、 array()関数の中で => を利用して記録ができます。連想記録の各要素の取り出し each() で行うことができます。以下は、2次元配列を利用した例です。
      <?php
      
        //連想記憶
        $syain = array(
                  array("番号" => "A-001", "氏名" => "鈴木 太郎", "所属" => "総務課",
                        "性別" => "男", "勤続年数" => 12),
                  array("番号" => "A-002", "氏名" => "田中 洋子", "所属" => "営業課",
                        "性別" => "女", "勤続年数" => 3)
            );
      
        for ($i = 0; $i < 2; $i++) {
          while (list($key, $value) = each($syain[$i])) {
            print $key . "→" . $value . "<BR>";
          }
          print "<BR>";
        }
      
      ?>

      番号→A-001
      氏名→鈴木 太郎
      所属→総務課
      性別→男
      勤続年数→12
      番号→A-002
      氏名→田中 洋子
      所属→営業課
      性別→女
      勤続年数→3

       連想配列の繰り返しは、foreach() で行うこともできます。
        foreach($syain as $key => $value) {
          print $key . "→" . $value . "<BR>";
        }

  4. 正規表現


    1. 正規表現

       正規表現(regular expression)は「文字パターン」を指定する表現形式です。正規表現は以下のような特殊記号を利用します。
      特殊記号 意味
      文字列の先頭 ^123:先頭から123の文字
      $ 文字列最後 ^123$:123 のみを含む文字列
      [ ] 文字クラス [A-Z]:大文字
       | 選択 [A|Z]:AまたはZ
      * 0回以上の繰り返し A[0-9]*:A,A7,A023,a2222
      + 1回以上の繰り返し A[0-9]+:A7,A023,a2222
      ? 0か1文字 A[0-9]?:A,A2

       指定した文字列に正規表現で指定したパタンがあるか否かは、
       ereg(<正規表現>,文字列)
      で判断できます。判断で 大文字、小文字を無視(ignore)するには eregi() を利用します。また、正規表現で検索したパタンを指定した文字列で置き換えるには、
       ereg_replace(<正規表現>,置換文字列,文字列)
      を利用します。