1. PHP の基本

PHP 用語

基本的な用語:

変数
制御構造
関数
演算子

PHP の基本ルール

<?php
...
...
?>

コメントを書く

3 種類のコメントがある:

<?php

// 一行のコメントとなる

# 一行のコメントとなる

/*
  複数行のコメントとなる
  複数行のコメントとなる
*/

?>

文法

変数

PHP において変数はいくつかの決まりがある:

1. 変数は [$a], [$b], [$c] で始まる
2. 変数名の大文字と小文字は区別される

helloworld.php

1
2
3
4
5
6
7
8
9
<?php

$str1 = "Hello, PHP World";
print($str1 . "\n");

$str2 = "Hello, PHP 世界";
print($str2 . "\n");

?>

helloworld.php の実行結果は:

[wtopia php.begin]$ php helloworld.php
Hello, PHP World
Hello, PHP 世界

可変変数

可変変数とは:

変数名を変数に代入することができる. [$$variable] を利用して, 変数に入っている文字列を変数名として, 別の変数にアクセスことができる.

var.php

1
2
3
4
5
6
7
8
<?php

$name = "feifei";
$feifei = 28;

print($$name . "\n")

?>

var.php の実行結果は:

[wtopia php.begin]$ php var.php
28

[;] (セミコロン) で区切られる

文字列型 String 型に対しては:

1. シングルクォーテーション (') -- エスケープシーケンス文字が使えない
2. ダブルクォーテーション (") -- エスケープシーケンス文字が使える

以下にヒアドキュメントによる例を示す, ここでは, FEIFEI の間の 3 行の文字列として, 変数 $str に代入される

multi_str.php

<?php

$str = <<< FEIFEI
This is a test.
これはテストです.
这是个测试.

FEIFEI;

print($str);

?>

multi_str.php の実行結果は:

[wtopia php.begin]$ php multi_str.php
This is a test.
これはテストです.
这是个测试.

配列

配列の情報を詳しく表示してくれる関数:

print_r()

注意:

配列の中の要素の型が一致しなくても良い, 例えば, 整数型と文字列型が混ざっていてもかまわない.

array1.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php

$color[0] = "red";
$color[1] = "green";
$color[2] = "black";
$color[3] = 1;
$color[4] = 2;
$color[5] = 3;

print_r($color);

?>

array1.php の実行結果は:

[wtopia php.begin]$ php array1.php
Array
(
    [0] => red
    [1] => green
    [2] => black
    [3] => 1
    [4] => 2
    [5] => 3
)

連想配列

PHP には連想配列がある. 連想配列では, 配列のキーを数字だけでなくて, 文字列を使うことができる.

asso_array.php

1
2
3
4
5
6
7
8
9
<?php

$color['pen'] = "black";
$color['bag'] = "white";
$color['box'] = "gray";

print_r($color);

?>

asso_array.php の実行結果は:

[wtopia php.begin]$ php asso_array.php
Array
(
    [pen] => black
    [bag] => white
    [box] => gray
)

関数

ユーザー定義関数

function 関数名(引数){
  ...
  ...
}

define_func1.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

function add($a, $b){
  return $a + $b;
}

function sub($a, $b){
  return $a - $b;
}

function mul($a, $b){
  return $a * $b;
}

function div($a, $b){
  return $a / $b;
}

print( "10 + 20 = " . add(10, 20) . "\n" );
print( "10 - 20 = " . sub(10, 20) . "\n" );
print( "10 * 20 = " . mul(10, 20) . "\n" );
print( "10 / 20 = " . div(10, 20) . "\n" );



?>

define_func1.php の実行結果は:

[wtopia php.begin]$ php define_func1.php
10 + 20 = 30
10 - 20 = -10
10 * 20 = 200
10 / 20 = 0.5

変数の有効範囲

変数にはスコープと呼ばれる有効範囲が存在する.

関数内で定義されて変数はローカル変数.

関数以外で宣言された変数はグローバル変数.

global_local.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php

$a = 1; /* Global Variable */

function localfunc(){
  print($a+9 . "\n"); /* Local Variable is different from Global Variable */
}

localfunc()

?>

global_local.php の実行結果は:

[wtopia php.begin]$ php global_local.php
9

演算子

算術演算子

$a + $b
$a - $b
$a * $b
$a / $b
$a % $b
++$a
$a++
--$a
$a--

比較演算子

$a == $b
$a != $b
$a < $b
$a > $b
$a <= $b
$a >= $b

代入演算子

$a = $b

文字列演算子

$a.$b ($a と $b を結合する)

複合演算子

$a += $b
$a -= $b
$a *= $b
$a /= $b
$a .= $b

論理演算子

$a && $b
$a || $b
$a xor $b
!$a

制御構造

条件分岐 (if ~ else)

if1.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

fscanf(STDIN, "%d\n", $point);

if($point >= 90){
  print("A"."\n");
}
else if($point >= 80){
  print("B"."\n");
}
else if($point >= 70){
  print("C"."\n");
}
else if($point >= 60){
  print("D"."\n");
}
else{
  print("F"."\n");
}

?>

if1.php の実行結果は:

[wtopia php.begin]$ php if1.php
100
A
[wtopia php.begin]$ php if1.php
20
F
[wtopia php.begin]$ php if1.php
60
D
[wtopia php.begin]$ php if1.php
72
C

注意:

if 分の中の else if か, elseif か どれかを取ってもエラーとはならない.

条件分岐 (switch)

switch1.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

$a = "abc";
$b = "def";

$c = "b";

switch($c){
case "a":
  echo "a"."\n";
  break;

case "b":
  echo "b"."\n";
  break;

default:
  echo "default"."\n";
  break;
}

?>

switch1.php の実行結果は:

[wtopia php.begin]$ php switch1.php
b

Example: Template Stytle Navigation

temp_navi.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php

switch($_GET['go']){
case "1":
  $inc = 'Page01.php';
  break;

case "2":
  $inc = 'Page02.php';
  break;

case "3":
  $inc = 'Page03.php';
  break;
  
case "4":
  $inc = 'Page04.php';
  break;

default:
  $inc = 'default.php';
  break;
}

//include ($inc);

?>

制御構造 2

繰り返し構文 (while)

while1.php

1
2
3
4
5
6
7
8
9
<?php

$i = 0;
while($i < 5){
  print("$i\n");
  $i++;
}

?>

while1.php の実行結果は:

[wtopia php.begin]$ php while1.php
0
1
2
3
4

繰り返し構文 (do while)

do_while1.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?php

$i = 0;

do{
  print("$i\n");
  $i++;
}while($i < 5);

?>

do_while1.php の実行結果は:

[wtopia php.begin]$ php do_while1.php
0
1
2
3
4

繰り返し構文 (for)

for1.php

1
2
3
4
5
6
7
<?php

for($i = 0; $i < 5; $i++){
  print("$i\n");
}

?>

for1.php の実行結果は:

[wtopia php.begin]$ php for1.php
0
1
2
3
4

繰り返し構文 (foreach)

foreach 文は配列に対して繰り返し処理を行う.

foreach は以下の2つの構文がある:

foreach(配列 as $val)
foreach(配列 as $key => $val)

foreach1.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?php

$family = array(
		'feifei' => 28,
		'yangyang' => 8,
		'yangguang' => 2,
		'kankan' => 1
);

foreach($family as $key => $val){
  print("$key: $val\n");
}

?>

foreach1.php の実行結果は:

[wtopia php.begin]$ php foreach1.php
feifei: 28
yangyang: 8
yangguang: 2
kankan: 1