PHP/phpbook/PHP入門

Last-modified: 2010-10-20 (水) 18:11:11

基本

PHPのHELLO WORLD

 <?php
 print 'Hello Word'; ←セミコロンが必要
 ?>

 以下のような記述法があるが、<?php ...が最も一般的で無難

  • <script language="PHP"> ... </script>
  • <?php .... ?>
  • <? ..... ?>
  • <% ..... %>

 エラーが起きたときは ; 忘れを確認。

PHPはサーバ側で実行される

ソースはクライアント側には見えないところが、JavaScriptとの違い

PHPはHTML内に記述するが、PHPが含まれていることを示すため、拡張子を.phpに変更する

(※.phpと決まっているわけではなく、Apacheの設定による)

 ちなみに、HTMLのままにしておくとPHPが実行されない。

コメントは、// ...と# ...と/* ... */

ヒアドキュメント(複数行の文字列の指定)

<<< ID
文字列1
文字列2
文字列3
ID


  • IDには、任意の文字列を指定する。
  • 空白は空白として扱われる
  • ""や''も単なる文字として扱われる

 例)

 <?php
  print <<< EOS
  お元気ですか?<br />
  いいお天気ですね。<br />
  ではさようなら。
  EOS;
 ?>

$name = '佐藤'.'さん'; //文字の連結

 $name .= ' 'のように省略されていることが多いので注意

出力は、print ' ' または echo ' '

 ・echo '出身地:', '東京都'; のように続けて出力も可
 ・括らなければ数値型を扱える
  echo "5 + 3 * 4 = ", 5 + 3 * 4, '<br />';
  echo "(5 + 3) * 4 = ", (5 + 3) * 4;

' ' と " "の違い

 ・' "文字列" 'のように指定できる
 ・"${name}"は変数展開されるが、'${name}'は変数展開されない

変数について

 ・何も代入していない変数はNULLであるとみなされる(nullも同じ)
 ・代入や格納や比較の際、${name}="aaa"のように { }で括らないように注意
  printでもprint $result; のように記述する
 ・型の宣言は必要ないが、型自体はあり、適切な型に変更される
 ・変数の型は gettype($var)で取得可能

参照

$num2 =& $num1;

 とすると、参照を代入できる(ただのエイリアス)

定義

 define("TAX", 0.05);
 $price1 = 100 * (1 + TAX);

if文でfalseになるもの

  • FALSE
  • 整数の0と浮動小数点数の0.0
  • 空文字""
  • 文字列の"0"
  • 要素の数が0の配列
  • NULL
  • メンバ変数の数がゼロであるオブジェクト

if文における型変換

 if( '5' == 5 ) → 型変換されてTRUEになる

===

 if文における型変換の関係で、
 b === a  →  bとaの値が等しく型も等しい
 という演算子がある

foreach

変数をコピーして取り出す(配列自体を変更できない)

 foreach (配列変数 as 変数){
  実行する処理1;
  実行する処理2;
 }

 例)
 $preflist = array('東京', '大阪', '名古屋');
 foreach ($preflist as $pref){
  print $pref;

 }

参照を取り出す(配列自体を変更できる)

 foreach (配列変数 as &変数){
  実行する処理1;
  実行する処理2;
 }

 ※このブロックが終了したときに
  unset($変数);
  を実行するべき →誤って配列を壊さないように参照を解除する

キーの取り出し

 foreach (配列変数 as キー変数 => 値変数){
  実行する処理1;
  実行する処理2;
 }

 例)
 $preflist = array('Tokyo' => '東京', 'Osaka' => '大阪');
 foreach ($preflist as $key => $value){
  print $key.'=>'.$value;
 }

連想配列

 $result['eigo'] = 72;
 $result['suugaku'] = 82;

 $result = array('eigo' => 72, 'suugaku' => 82 );
 と記述しても同じ

print_r($result);

 resultが配列だったときに、
 Array
 (
  [0] => 85
  [1] => 92
  [2] => 68
 )
 のように[キー] => 値という形式で表示してくれる

PHPの配列

  • 連続している必要はない
  • 負の値をキーにすることも可能
  • 文字列をキーに指定することも可能(これは連想配列)

キーの自動付与

  • ケース1
     $var[] = 100;   //[0]に入る
     $var[] = 'Tokyo'; //[1]に入る
  • ケース2
     $var[12] = 3;
     $var[7] = 35;
     $var[] = 300; //前の最大の次なので、[13]に入る
  • ケース3
     $var[-3] = 53;
     $var[] = 32; //前の最大値が負の場合は[0]に入る
  • ケース4
     $var = array(10 => '遠藤', '斉藤', '伊藤');
     //キーの自動付与を使った例

多次元配列

$maker = array('富士通', 'NEC', 'Sony', 'Sharp');
$type  = array('Note', 'Desktop');
$pc    = array($maker, $type);

$pcはキーの自動付与を使った配列だから、
$pc[0] = $maker; $pc[1] = $type; と同じ
したがって、 $pc[0][1] == NECで、 $pc[1][0] == NOTEである。

関数定義と呼び出し

 ・定義

  function 関数名(引数1, 引数2, ...){
   ...
  }

 ・呼び出し

  関数名(引数1, 引数2, ...);

 ・戻り値がある場合は、定義はそのままで最後にreturn ...;
  呼び出しは、変数 = 関数名(引数1, 引数2, ...);で。

return

 returnは関数ではないので括弧でくくる必要はないとあるが、くくってもエラーではない。

クラス

 ・宣言

  class クラス名{
   public メンバ変数名; //どこからでも
   private メンバ変数名; //同じクラス内のみ
   protected メンバ変数名;  //同じクラス+子クラス

   function メンバメソッド名(引数,...){
    // クラスの中で行う処理
   }
  }

  ※functionの前にもアクセス演算子を付けることが可能
 
 ・オブジェクトの生成
  $変数名 = new クラス名(引数);

 ・アクセス
  $オブジェクト名->メンバ変数名;
  $オブジェクト名->メンバメソッド名();
   ※$thisも使える

const

 定数の定義。
 defineも使えるが、クラス内部で定義したい場合にconstを使う。

const 定数名 = 値;
  • $が頭に使ないので注意
  • self::定数名でアクセス可能

コンストラクタ

 メソッド名の部分を"__construct"とする。

 class クラス名(){
  function __construct(変数, 変数, ...){
   // コンストラクタ内で行いたい処理
  }
 }