ノート:PHP関連

出典: PHP note 〜カンニング用〜 by visicom

目次

[編集] 演算子

算術演算子 算術演算子とは、数値を足したり引いたりするための演算子です。

【算術演算子一覧】

演算子 意味 例示 機能 + 加算 17 + 5 2つ以上の値の足し算を行う - 減算 17 - 5 2つ以上の値の引き算を行う

  • 乗算 17 * 5 2つ以上の値の掛け算を行う

/ 乗算 17 / 5 2つ以上の値の割り算を行う % 剰余 17 % 5 割り算したときの割り切れなかった数を求める


サンプル

<?php

 $samp = 17 + 5;
 echo "17 + 5 = $samp
\n";
 $samp = 17 - 5;
 echo "17 - 5 = $samp
\n";
 $samp = 17 * 5;
 echo "17 * 5 = $samp
\n";
 $samp = 17 / 5;
 echo "17 / 5 = $samp
\n";
 $samp = 17 % 5;
 echo "17 % 5 = $samp
\n";

?>

出力結果

17 + 5 = 22 17 - 5 = 12 17 * 5 = 85 17 / 5 = 3.4 17 % 5 = 2


■ 比較演算子 比較演算子は、2つの値を比較するものです。

【比較演算子一覧】

演算子 意味 例示 機能 == 等しい $x == 15 変数$x と 15は等しい < 小さい $x < 15 変数$x は 15より小さい > 大きい $x > 15 変数$x は 15より大きい <= 同じか小さい $x <= 15 変数$x は 15より同じ、または小さい >= 同じか大きい $x >= 15 変数$x は 15より同じ、または大きい != 等しくない $x != 15 変数$x は 15と等しくない <> 等しくない $x <> 15 変数$x は 15と等しくない

サンプル

<?php

   $x = 15;
echo "

変数\$x の代入された値は 15です。

\n";
   if($x == 15)  echo  "\$x の値は 15 に等しい
\n"; if($x < 10) echo "\$x の値は 10 より大きい
\n"; if($x > 20) echo "\$x の値は 20 より小さい
\n"; if($x <= 10) echo "\$x の値は 10 より大きいか等しい
\n"; if($x <= 20) echo "\$x の値は 20 より小さいか等しい
\n"; if($x != 10) echo "\$x の値は 10 と等しくない
\n"; if($x <> 10) echo "\$x の値は 10 と等しくない";

?>

出力結果

変数$x の代入された値は 15です。 $x の値は 15 に等しい $x の値は 20 より小さいか等しい $x の値は 10 と等しくない $x の値は 10 と等しくない


■ 代入演算子 代入演算子はイコール「=」で表され、左辺に右辺を代入するものです。 変数に値を代入する時に使われます。

【代入演算子一覧】

演算子 意味 例示 機能 = 代入 $x = 15 左辺 $x に右辺 15 を代入する += 加算代入 $x += 15 $x = $x + 15と同じ意味です .= 連結代入 $x .= 15 $x = $x . "15"と同じ意味です ++ 加算代入 $x ++ $x = $x + 1と同じ意味です -- 減算代入 $x -- $x = $x - 1と同じ意味です

サンプル

<?php

 $samp = 15;
 echo "$samp
\n";
 $samp += 5;
 echo "$samp
\n";
 $samp .= 17;
 echo "$samp
\n";
 $samp++;
 echo "$samp
\n";
 $samp--;
 echo "$samp
\n";

?>

出力結果

15 20 2017 2018 2019


■ 論理演算子 論理演算子はTRUEやFALSEに対して論理演算を行うもので、if文などで条件分岐の判定に使われます。

【論理演算子一覧】

演算子 意味 例示 機能 && 論理積 $x && $y 2つの値が成り立つとき || 論理和 $x || $y 2つの値の片方または両方が成り立つとき and 論理積 $x and $y 2つの値が成り立つとき or 論理和 $x or $y 2つの値の片方または両方が成り立つとき xor 論理和 $x xor $y 2つの値の片方が成り立ち、両方が成り立たないとき! 否定 !$x 値が成り立たないとき

サンプル

<?php

   $x = 15;
   $y = 20;
echo "

変数\$x の代入された値は 15です。

\n"; echo "

変数\$y の代入された値は 20です。

\n";
   if($x == 15 && $y == 20)  echo  "\$x 値は 15 に等しく、\$y 値は 20 に等しい
\n"; if($x == 15 || $y == 21) echo "\$x の値が 15 に等しいか、\$y の値が 21 に等しい
\n"; if($x == 15 && $y == 20) echo "\$x 値は 15 に等しく、\$y 値は 20 に等しい
\n"; if($x == 16 or $y == 20) echo "\$x の値が 16 に等しいか、\$y の値が 20 に等しい
\n"; if($x == 16 xor $y == 20) echo "\$y の値が 20 に等しいが、\$x 値は 16 に等しくない
\n"; if(!$x == 16) echo "\$x 値は 16 に等しくない
\n";

?>

出力結果

変数$x の代入された値は 15です。 変数$y の代入された値は 20です。 $x の値は 15 に等しく、$y 値は 20 に等しい $x の値は 15 に等しいか、$y 値が 21 に等しい $x の値は 15 に等しく、$y 値は 20 に等しい $x の値は 15 に等しいか、$y 値が 21 に等しい $y の値が 20 に等しいが、$x 値は 16 に等しくない $x 値は 16 に等しくない

[編集] PHP関数(配列)

array_push 関数 array_push 関数は Array 最後に新しい値 List を加える。

下記書式 array_push(Array, List);

サンプル

$fruit = array("りんご", "みかん", "ぶどう"); $str = array_push($fruit, "バナナ", "マンゴー"); echo($fruit);

出力結果

Array( [0] => りんご [1] => みかん [2] => ぶどう [3] => バナナ [4] => マンゴー )


■array_shift 関数 shift関数はリスト Array 先頭から要素をひとつ取り出して返すこと

下記書式 $return = array_shift(Array);

サンプル

$fruit = array("りんご", "みかん", "ぶどう"); $str = array_shift($fruit); echo($fruit);

出力結果

Array( [0] => みかん [1] => ぶどう )


■sort 関数、 sort 関数は List を ASCII コード順に並べかえること

下記書式 sort(List);

サンプル

$fruit = array("りんご", "みかん", "ぶどう", "いちご"); sort($fruit, SORT_STRING); echo($fruit);

出力結果

Array( [0] => いちご [1] => ぶどう [2] => みかん [3] => りんご )


※文字列としてとして評価しソートする場合は、上記サンプルのように「SORT_STRING」を第2引数に指定します。 また、数値として評価し、小さい値からソートする場合は、SORT_NUMERICを指定します。

[編集] 日付と時間を扱う関数

getdate()関数 現在の日付と時間を取得するには、getdate()関数を使用します。 この関数には連想配列として、以下のようなインデックスが定義されています。


【getdate()関数が返す連想配列一覧】

キー 値の意味 例 second 秒の値 0 ~ 59 mimutes 分の値 0 ~ 59 hours 時の値 0 ~ 23 mday 日付の値 1 ~ 31 wday 曜日の値(数値) 0(日曜) ~ 6(土曜) mon 月の値(数値) 1 ~ 12 year 年の値(4桁) 2009 など yday 年単位の日 0 ~ 365 weekday 曜日の値(フルスペル) Sunday ~ Saturday month 月の値(フルスペル) January ~ December


サンプル

<?php echo "今日は"; $now = getdate(); echo $now["year"].'年'.$now["mon"].'月'.$now["mday"].'日 '; echo $now["hours"].'時'; echo $now["minutes"].'分'; echo $now["seconds"].'秒'; ?>

出力結果

今日は2009年6月10日 18時17分32秒


■ date()関数 日付表現のフォーマットをするには、date()関数を使用します。


【フォーマット文字一覧】

a --------- am または pm を定義する A --------- AM または PM を定義する d --------- 2桁の日付を定義する D --------- 3文字の曜日 (Sun ~ Sat) を定義する F --------- フルスペルの英字で月を定義する h --------- 12時間単位 (00 ~ 12) の時間を定義する H --------- 24時間単位 (00 ~ 23) の時間を定義する g --------- 先頭に 0 をつけない12時間単位 (0 ~ 12) の時間を定義する G --------- 先頭に 0 をつけない24時間単位 (0 ~ 23) の時間を定義する i --------- 2桁の分 (00 ~ 59) を定義する j --------- 先頭に 0 をつけない (0 ~ 31)の日を定義する l --------- フルスペルの英字で曜日を定義する L --------- 閏年では 1 を、それ以外は 0 を返す n --------- 先頭に 0 をつけない (0 ~ 12) の月を定義する m --------- 2桁のの月 (01 ~ 12) を定義する M --------- 3文字の月 (Jan ~ Dec) を定義する s --------- 2桁の秒 (00 ~ 59) を定義する S --------- 英文の序数を表わす接尾語 (th ~ nd) を定義する t --------- 指定した月の日数 (28 ~ 31) を定義する U --------- UNIX時間 (1970年1月1日からの秒数) を定義する w --------- 数値で示す曜日 (0 ~ 6) を定義する y --------- 西暦の下2桁を示す年を定義する Y --------- 西暦を4桁で示す年を定義する z --------- その年の1月1日からの通算日を定義する Z --------- タイムゾーンのオフセット秒 ( -43200 ~ 43200まで)

date()関数の引数に、以上のような値を定義することで、様々な形のフォーマットを提供し、表現します。


<?php $today = date("Y/m/d l H:i:s");

   echo($today);

?>


■ checkdate()関数 日付の妥当性をチェックするには、checkdate()関数を使用します。

checkdate は引数で与えられた日付が有効であれば true、無効であれば false を返します。 引数の順番は 月、日、年の順番です。

サンプル

<?php $y = 2009; $m = 1; $d = 1; if (checkdate($m, $d, $y)) {

   echo "${y}年${m}月${d} 日は日付として有効です。
\n";

} else {

   echo "${y}年${m}月${d}日は日付として無効です。
\n";

}

$y = 2009; $m = 1; $d = 32; if (checkdate($m, $d, $y)) {

   echo "${y}年${m}月${d}日は日付として有効です。
\n";

} else {

   echo "${y}年${m}月${d}日は日付として無効です。
\n";

} ?>

出力結果

2009年1月1 日は日付として有効です。 2009年1月32日は日付として無効です。

[編集] PHP関数一覧

■echo, print 関数 print、echo

Listを出力する書式 ・print List ・echo List

■printf ・List を Format 文字列に従って整形して出力。

下記書式 printf(Format, List);

サンプル

list($year, $month, $day) = array( "2009", "10", "2"); printf("%04d年%02d月%02d日", $year, $month, $day);

出力結果

2009年10月02日


■sprintf ・Format 文字列に従って整形した文字列を返す方法。

下記書式

     $return = sprintf(Format, List);

サンプル

list($year, $month, $day) = array( "2009", "10", "2"); $nowDate = sprintf("%04d年%02d月%02d日", $year, $month, $day); echo $nowDate;

出力結果

2009年10月02日

下記は、指定書式例です。

%s 文字列を出力します。 %d 数字を出力します。 %04d 4桁の数字を出力します。数字が4桁に満たない場合には0で埋めます。 (例:55→0055) %.2f 小数点2桁までを出力します。(例:3.14159→3.14)

[編集] 他ファイル関数

・fpassthru関数 ファイルを標準出力(ブラウザ)に出力する方法

・readfile 関数 ファイル全体を読み、標準出力(ブラウザ)に出力する方法。

サンプル

<?php readfile('somefile.txt') ?>


・file() 関数 ファイルを全体を読み、配列に格納する方法。

サンプル

<?php $n = 10; $file = @file("somefile.php");

$i = 0; while( $i < $n ){

 echo "$file[$i]";
 $i++;

} ?>

などがある。

[編集] ファイル操作

 ファイルへの読み書き等は fopen関数を使用してポインタを取得した後fgets() 関数や fputs() 関数を使用する。

ファイルへのアクセスが終了したら、fclose() 関数を使用してファイルを閉じる。 例えば fclose($cd);

 ファイルへの書き込みは  fputs関数でファイルポインタを指定して書き込むことができる。  逆に  ファイルへの読み込みは  fgets関数を使用して読み込むことができる。


  サンプル

下記のスクリプトでファイル(somefile.php)の1行目が表示されます。

<?php $handle = fopen("somefile.php", "r");

echo fgets( $handle );

fclose( $handle ); ?>

[編集] PHP制御関連

PHPに限らずプログラムの基礎だが下記の制御関連を覚えておくと便利。

  1. for文
     forの後に、初期値、繰り返し条件、条件の更新を;で区切って ( ) の中に指定する。
               for($count=0; $count<100; $count++){
                   .........
               }

サンプル:1から10までの数を出力

<?php for( $i = 1; $i<= 10; $i++ ){ echo $i."
\n"; } ?>

出力結果

1 2 3 4 5 6 7 8 9 10


  2. while文
     whileの後に、繰り返し条件を ( ) の中に指定する。
               while($count<100){
                   .........
               }

サンプル:1から10までの数を出力

<?php $i = 1; while( $i <= 10 ){

 		echo $i++."
\n";

} ?>

出力結果

1 2 3 4 5 6 7 8 9 10


  3. do ~ while文
     繰り返し条件を後で判定する。
               do{
                   .........
               }while($count<100);


サンプル:1から10までの数を出力

<?php $i = 1; do{

 		echo $i++."
\n";

} while( $i <= 10 ); ?>

出力結果

1 2 3 4 5 6 7 8 9 10


  4. foreach文
     配列の各要素について、{ } の中の文が繰り返し実行される。
               $count = array('one','two','three');
               foreach( $count as $c ){
                   .........
           	}

サンプル:飛び飛びの数値添え字の配列

	<?php

$a = array(

 		1  => 100,
 		5  => 500,
 		10 => 1000

);

foreach( $a as $value ){

 		echo $value."
\n";

} ?>


出力結果

100 500 1000

[編集] 制御2

分岐

if 文は条件式が真であるとき、それに続く { } 内の文が実行される。真でないとき、 elseがあればそれに続く { } 内の文が、無ければ以降の文が実行される。

  1. if文
               if( 条件式 ){
                   .........
           	}

サンプル

<?php $a = $b = 3; if( $a == $b ){

 		echo '$aと$bには同じ値が代入されています。';

} ?>

出力結果

$aと$bには同じ値が代入されています。


  2. if ~ else文
               if( 条件式 ){
                   .........
           	}
               else{
                   .........
           	}

サンプル

<?php $a = 1; $b = 3; if( $a > $b ){

 		echo '$aは$bよりも大きい。';

} else{

 		echo '$aは$bよりも小さい。';

} ?>

出力結果

$aは$bよりも小さい。


  3. if ~ elseif ~ else文
               if( 条件式 ){
                   .........
           	}
               elseif( 条件式 ){  // Perl の様に elsif ではない !!
                   .........
           	}
               else{
                   .........
           	}

サンプル

<?php $a = 3; if( $a == 1 ){

   		echo '$aは1である';
 		}
 		elseif( $a == 2 ){
   		echo '$aは2である';
 		}
 		else{
   		echo '$aは1でも2でもない';
 		}

?>

出力結果

$aは1でも2でもない


分岐(switch 文)

switch 文は、変数の値が case の後の値と一致した場合だけ実行される。

   * switch 文
               switch ( 変数 ) {
                   case 値1;
                       .........
                       .........
           	    break;
                   case 値2;
                       .........
                       .........
           	    break;
                   .........
                   .........
           	
               }

サンプル

<?php $a = 2; switch( $a ){

 		case 0:
     		echo '$aは0です。';
     		break;
 		case 1:
     		echo '$aは1です。';
     		break;
 		case 2:
     		echo '$aは2です。';
     		break;
 		default:
     		echo '$aは0・1・2のいずれでもありません。';

} ?>

出力結果

$aは2です。

[編集] サーバコマンド

 chmod でパーミッションを変更するのはご存知だろう。  ただ間違えて そのままroot権限で ファイルコピーしたことがあった場合

 下層ファイルも一括変換しちゃおう

 サブディレクトリ下も含め特定のファイルをパーミッション変更させたい場合、次のようにfind結果出力にchmod指定を適用させよう。 $ find /var/www/cgi-bin/ -name \*.cgi -exec chmod 755 {} \;

[編集] サーバ所有権

 たまぁーにサーバのデータを移しかえ依頼などないだろうか。  その際 サーバ CP や MV コマンドで移すと思うが  たまぁーに  所有権の変更を忘れてしまう事はありませんか。

 chown -R 所有者 ディレクトリ だけは忘れないように・・・・

表示