WEBデザイン・開発講義WEB Design&Development Lecture

PHPの基本プログラミング

PHPの基本プログラミング

PHPの基本プログラミング

PHPの基本プログラミング※画像クリックで拡大表示

※アイコンの機能:表示   実行  ダウンロード

  • PHPのインストール環境の機能確認は、
    「phpinfo()」関数を利用しますので、プログラム作成(phpinfo.php)し、「htdocs」フォルダ下に配置して、実行してみましょう。
    <?php
       phpinfo();
    >
    ※既にインストールしているPHP5.4.29のバージョンにおけるApache2.4.6の利用環境、PHP初期設定している内容(php.ini)のPHP機能拡張、PHPスーパーグローバル変数の「$_SERVER」「$_ENV」などが確認できます。
    PHP5.4.29環境確認:phpinfo()実行結果(PDF)
  • PHPの基本的プログラミングの命令・関数
  • header関数によるコンテンツ出力の種類の指定は、
    Content-type:text/plain; charset=UTF-8」のように「プレーンなテキスト表示:text/plain」と「コードの指定: UTF-8」(必要の場合)を設定します。全ての出力前にこの関数を実行する必要があります。
    通常HTMLドキュメントの出力指定は「text/html」、JPEG画像の出力指定は「image/jpeg」等を記述します。
  • 指定したURLへジャンプする場合、HTMLページのキャッシュを無効にする場合等、header関数を利用します。
    //(LocationでURL指定した例)
    header("Location: http://sample.com");
    exit;//exit関数は、その後の処理を実行させない出口指定
    /*(HTTP/1.1サーバプロトコル用)
       強制的にキャッシュ無効に指定した例 */
    header("Cache-Control: no-cache, 
      must-revalidate");
  • エスケープシーケンスは、
    キーボードから入力不可の文字(改行やタブなど)やPHP言語上で特別な意味を持つ文字記号($など)の前に「¥」文字を付加して文字表現することをいいます。
    エスケープシーケンス内容
    ¥r復帰(CR)
    ¥n改行(LF)
    ¥tタブ(tab)
    ¥¥¥文字
    ¥$$文字
    ¥(開き小括弧
    ¥)閉じ小括弧
    ¥[開き大括弧
    ¥]閉じ大括弧
    ¥'シングルクオーテーション
    ¥"ダブルクオーテーション
    ¥nnn8進数で nnn の表記
    ¥xnn16進数で nn の表記
    ※OS別の改行記号が違うので注意が必要:Windows「¥r¥n」、Macintosh「¥r」、UNIX系「¥n」です。
  • 変数と型キャストは、
    変数定義時に明示的な型定義をする必要はなく、変数が使用される文により型が定義されます。キャストを利用して、型変換も可能です。
    PHP変数と型キャストの関連関数まとめ(PDF)
    PHPデータの値・型判断上のPHP関数比較(PDF)
  • 文字列連結の演算子「.(dot)」は、
    変数、文字列を連結するもので、実行は左側から開始されて複数の変数、文字列を連結した内容を返します。
    //(変数、文字列を連結した例)
      $string='PHP';
      $str="文字列".$string.'内容です';
      echo $str;  //$strの内容「文字列PHP内容です」 
    $str .= xxx」の代入文字列演算子は、変数$strの文字列の後ろに「xxx」を追加連結した内容が、代入されます。
  • 定数は、
    define関数を利用して、名称とそれに対する値(文字列他)を定義します。
    1. 定数に指定できるのは、スカラデータ(boolean, integer, double, string) のみ(PHP5.6以前)で、一般的に定数の名称は、大文字の英数字を利用して、区別します。
      //(URL名称の定数例)
        define('URL',"http://sample.com");
    2. 定義した名称のスコープは、プログラム全体(グローバル)で参照可能となり、ユーザ関数内で定義する変数が、その関数内のみ(ローカル)のスコープとなることと異なります。
    3. 定義した定数の名称の文字連結した値を記述することも可能です。
    4. PHP5.3以降は、「const」による定数の定義(例:const GREET="こんにちは";)も可能です。
    5. マジカル定数は、使われ方によって変化する自動的に定義される定数です。
      定数名内容説明
      __LINE__ファイル上の現在の行番号
      __FILE__ファイルのフルパスとファイル名
      __DIR__ファイルの存在するディレクトリ(PHP5.3以降)
      __FUNCTION__関数名
      __CLASS__クラス名
      __TRAIT__トレイト名(PHP5.4以降)
      __METHOD__クラスのメソッド名
      __NAMESPACE__現在の名前空間の名前
      (PHP5.3以降)
      ※「__FILE__と__DIR__」の例:
    6. 予約された定数を取得する関数で一覧表示が可能です。
  • 代数・代入・比較・論理演算子
    命令/関数説明
    プログラム内容
    $x [代数演算子] $y+, -, *, /, %, ++, --
    「四則演算」
    $x [代入演算子] $y+=, -=, *=, /=, %=
    「代入の四則演算」
    $x [比較演算子] $y==, >, >=, !=, <, <=, ===, !==, <>
    「比較演算子の操作結果」
    $x [論理演算子] $y!, &&, and, ||, or, xor
    「論理演算子の操作結果」
    ※演算子の優先順位があり、( )で括って演算順序の記述ミスを低減しましょう。
    PHPの演算子の詳細と優先順位(PDF)
    ※比較演算子で左辺、右辺の型が自動変換されることに注意が必要です。
    PHPデータの比較演算子の型の論理値比較(PDF)
  • スコープ、参照渡しとユーザ関数の関連は、
    PHPのメイン処理で利用する変数を「グローバル変数」、ユーザ関数内で利用する変数を「ローカル変数」と呼び、それぞれ利用できる有効範囲をスコープと呼びます。
    メイン処理で設定したグローバル変数は、ユーザ関数内では利用できずスコープ外となるため、ユーザ関数内で利用するために、「global」を付加してグローバル変数であることを宣言する必要があります。
    ユーザ関数の引数の変数名の前に「&」を付加した「参照渡し」の指定をすることでユーザ関数内で代入した内容がグローバル変数と同様な形で設定されます。
  • 日付処理の代表的な関数は、
    命令/関数説明
    プログラム内容
    date()
    mktime()
    time()
    ・date:ローカルの日付/時刻を書式化
    ・mktime():日付をタイムスタンプとして取得
    ・time:現在のタイムスタンプを返す
    「今日の日付表示」
    「HTMLドキュメント上で日付・時刻の操作」
    PHPの日付フォーマット一覧(PDF)

PHP基本プログラミングと文法

  • フローチャートに対するPHP分岐・ループ処理の比較
    フローチャート対応のPHPプログラミングの分岐・ループ処理
    のようにフローチャートからPHPプログラミングと対応付けて処理の流れを理解しましょう。
  • 分岐・繰り返し(ループ)のプログラミングは、
    命令/関数説明
    プログラム内容
    if~elesif~else文if(条件式){...}elseif(条件式){...}else{...}
    「if条件に合う時、{ }内を実行、次の条件(elseif)に合う時、{ }内を実行、(elseif)を繰り返し可能で、条件に合わないときにそれ以外(else)の処理を実行」
    switch文「switch(変数) { case:xx ~ break; default:~ } 文」
    「変数の値が等しいとき(case)文を実行し、(break)でそのcaseを終了。(case)にない場合は(default)を実行」
    三項演算子の分岐「 (条件式)? (xxx):(yyy) 文」
    「三項演算子による条件分岐で、条件式がtrueのとき、左辺の実行、「:」の後の右辺がfalse条件の実行。左辺・右辺のネスト( )で括る処理も可能」
    while文
    do while文
    「while(条件式) { ... } 文」→
    条件式でループ判断
    「do { ... } while(条件式)文」→
    1度実行(do)し条件式でループ判断
    「単純配列のループ処理:while,do whileの違い」
    「ループ:while文と制御:break,continueのレベル利用」
    for文「for (初期値;終了条件;増分) { ... } 文」
    「開始値と終了条件による単純配列のループ処理」
    「連想配列のネストした単純配列(2次元配列)のループ処理」
    foreach文「foreach (配列 as 添字の値 ) { ... } 文」→単純配列形式
    「foreach (配列 as 添字 => 値 ) { ... } 文」→連想配列形式
    「foreach文の添字と値の利用」「foreach文の参照渡しで値変更」
    ループ処理の比較「単純配列の表示で、foreach, for, while, do~while処理の比較」
  • 配列操作の主な関数は、
    PHPの配列の主な関数と操作
    配列の編集、配列のソート、配列のステータス情報、、配列のループ制御、配列の要素編集、配列の比較計算に大別され、多岐にわたる処理操作が可能です。PHPプログラミングは、配列をうまく利用することが基本レベル突破口となります。
    PHP配列関連の関数一覧(PDF)
  • 配列関連の関数プログラミングは、
    分類関数
    プログラム内容
    編集array_pop, array_push, array_unshift, array_shift, array_slice, array_splice, array_replace, array_merge, array_flip, array_combine, array_chunk, array_reverse, count, array_keys, array_values, array_search, array_map, list 他
    「配列の先頭からの追加・取り出し、末尾からの追加・取り出し、指定位置からの追加・変更・削除の操作」
    「配列のマージ、逆順、分割等の操作」
    「配列の合成、キーと値の変換、検索、ユーザー関数map、list代入、件数の操作」
    ソートsort, rsort, ksort, krsort, asort, arsort, natsort, array_multisort, usort, uksort 他
    「配列のソートで、値、添字(キー)、連想配列キーなどの操作」
    「配列のソートで、多次元配列、自然順ソート、ユーザ関数定義のソートなどの操作」
    ステータス情報array_key_exists, key_exists, in_array
    「キーまたは添字が配列にあるかどうか、配列の値があるかどうか操作の操作」
    ループ制御each, key, reset, current, pos, next, end, prev
    「配列の内部ポインタの制御と取得する操作」
    要素編集array_unique, array_fill, array_count_values, array_walk, array_reduce, array_pad, array_filter, range, shuffle, array_rand, compact, extract 他
    「配列要素の値の出現回数、キーの大小文字変換、ユーザー定義の関数適用、配列減少、指定数の埋め、フィルタの操作」
    「配列生成生成、配列の値をシャッフル、キーのランダム取得、可変変数の配列作成、配列から可変変数の作成の操作」
    比較計算array_diff, array_diff_uassoc, array_intersect, array_intersect_uassoc, array_udiff, array_uintersect, array_product, array_sum 他
    「配列要素の値の比較による差の計算、共通項の計算の操作」
    「配列要素のユーザ関数による値とキーの比較による差の計算、共通項の計算、配列の積合計と和合計の操作」
  • 文字列操作の主な関数は、
    string関数の文字列分割・配列統合(explode, implode)、文字列のフォーマット編集(sprintf 注:printf関数も同様な操作可能)、文字置換・削除(str_replace, trim, mb_strlen, mb_substr)、日本語「半角・全角」変換(mb_convert_kana)、ハッシュ値計算(md5, sha1)などの関数利用を習得します。
    分類関数
    プログラム内容
    分割・統合explode(delimiter, string), implode(grue, array)
    「文字列の分割(delimiter)、統合(grue)の文字で文字列を操作する関数」
    フォーマット編集sprintf(format, arg1, arg2, ...), printf(同左)
    「文字列をフォーマット指定で編集する関数で変換指定子と引数の組み合わせ」
    変換指定子の形式は、
    %[符号指定子][パディング指定子][表示幅指定子][精度指定子][型指定子]
    (詳細内容は、上記PHPプログラムを参照)
    文字置換・削除str_replace, str_repeat, trim, substr, mb_substr, strlen, mb_strlen
    「文字列内の文字置換・削除、文字取得、文字列長の関数」
    日本語「半角・全角」変換mb_convert_kana(string [,option [,encoding]])
    「日本語文字列を「半角」⇔「全角」変換する関数」
    日本語「全角」の文字編集require_once, mb_strlen, mb_substr
    「文字マップ関数の作成」sprintf利用
    「日本語の文字列長さと一文字取得」
    ハッシュ値計算md5, sha1
    入力した文字列をハッシュ計算し、保存してあるハッシュ値の比較で認証確認をする関数→フォームによるユーザ認証で利用する関数
  • 数値操作の主な関数は、
    Math関数の小数点以下の上限(ceil)、下限(floor)、四捨五入(round)、乱数発生(rand, mt_rand)、2進10進変換(bindec)、10進16進変換(dechex)、16進10進変換(hexdec)などの関数利用を習得します。
  • 可変変数の利用方法は、
    可変変数は、変数の値をとり、変数の名前として扱い、変数名を動的にセットして利用します。
    可変変数を配列で使用する場合はパーサがどの構文形式の変数かを判断する必要があり、例えば 「$$a[1]」と書いた場合、「$a[1]」を変数として使用したいときは「${$a[1]}」とし、「$$a」を変数とし[1]を変数の添え字としたいときは「${$a}[1]」とする構文を用います。

PHPプログラミング補足説明

PHPリファレンス

参考資料の表示

pagetopへ