PHP 基礎
はじめ
変数と型・型変換・定数
変数
PHPでは、変数を $
記号で宣言できる。
変数は動的型付けで、型を明示する必要はない。
<?php
$variable = "Hello, PHP!";
echo $variable; // 出力: Hello, PHP!
?>
-
変数名: 変数名は
$
で始まり、英数字とアンダースコアが使用できる。(例:$my_var
,$variable1
)。 - 変数のスコープ: グローバルスコープまたはローカルスコープ
論理型
論理型(boolean)は、true
または false
の2つの値を持つ型。
<?php
$isTrue = true;
$isFalse = false;
if ($isTrue) {
echo "これは真です。"; // 出力: これは真です。
}
?>
整数
整数型(integer)は、整数値。PHPでは、整数は符号付き32ビットまたは64ビットの値。
<?php
$integer = 123;
echo $integer; // 出力: 123
?>
浮動小数点数
浮動小数点数(float)は、少数点を含む数値。
精度: 浮動小数点数は計算結果が近似値。
<?php
$float = 3.14;
echo $float; // 出力: 3.14
?>
文字列
文字列(string)は、テキストデータを扱う型。
<?php
$string = "こんにちは、PHP!";
echo $string; // 出力: こんにちは、PHP!
?>
連結: .
演算子を使用して文字列を結合できる。
<?php
$firstName = "John";
$lastName = "Doe";
$fullName = $firstName . " " . $lastName;
echo $fullName; // 出力: John Doe
?>
配列
配列(array)は、複数の値を一つの変数に格納するための型。
<?php
$fruits = array("Apple", "Banana", "Cherry");
echo $fruits[1]; // 出力: Banana
?>
連想配列: キーと値のペアでデータを格納できる。
<?php
$person = array("first_name" => "Jane", "last_name" => "Doe");
echo $person["first_name"]; // 出力: Jane
?>
オブジェクト
オブジェクト(object)は、クラスから生成されたインスタンス。オブジェクトはプロパティ(属性)とメソッド(機能)を持つ。
<?php
class Person {
public $name;
function greet() {
return "Hello, " . $this->name;
}
}
$person = new Person();
$person->name = "Alice";
echo $person->greet(); // 出力: Hello, Alice
?>
リソース
リソース型(resource)は、外部リソースを参照するための特殊な型。
- 使用例: データベース接続、ファイル操作、ネットワーク接続など。
<?php
$fileHandle = fopen("example.txt", "r");
if ($fileHandle) {
echo "ファイルが正常に開かれました。";
fclose($fileHandle);
} else {
echo "ファイルを開けませんでした。";
}
?>
NULL
NULLは、変数が値を持たない状態を表す。
<?php
$value = NULL;
if (is_null($value)) {
echo "値はNULLです。"; // 出力: 値はNULLです。
}
?>
定義済み変数
PHPにはいくつかのグローバル定義済み変数が存在する。
例:$_GET
、$_POST
、$_SESSION
、 etc...
<?php
echo $_SERVER['HTTP_USER_AGENT']; // ユーザーエージェントを出力
?>
定数
定数は、変更できない値を定義するためのもの。
define()
関数を使用して定義する。
<?php
define("PI", 3.14159);
echo PI; // 出力: 3.14159
?>
定数配列
定数配列(const array)はPHP 7.4以降でサポートされており、const
キーワードで定義できる。
<?php
const FRUITS = ["Apple", "Banana", "Cherry"];
echo FRUITS[1]; // 出力: Banana
?>
定義済み定数
組み込み定義済み定数が存在する。
例:PHP_VERSION
、 E_ERROR
、etc...
<?php
echo PHP_VERSION; // PHPのバージョンを出力
?>
演算
+
)
加算演算子(加算演算子(+
)は、2つの数値を加算する。
<?php
$a = 10;
$b = 5;
$result = $a + $b;
echo "加算: " . $result; // 出力: 15
?>
-
)
減算演算子(減算演算子(-
)は、1つの数値から別の数値を減算する。
<?php
$a = 10;
$b = 5;
$result = $a - $b;
echo "減算: " . $result; // 出力: 5
?>
*
)
乗算演算子(乗算演算子(*
)は、2つの数値を乗算する。
<?php
$a = 10;
$b = 5;
$result = $a * $b;
echo "乗算: " . $result; // 出力: 50
?>
/
)
除算演算子(除算演算子(/
)は、1つの数値を別の数値で除算する。
<?php
$a = 10;
$b = 5;
$result = $a / $b;
echo "除算: " . $result; // 出力: 2
?>
%
)
剰余演算子(剰余演算子(%
)は、除算の余りを返す。
<?php
$a = 10;
$b = 3;
$result = $a % $b;
echo "剰余: " . $result; // 出力: 1
?>
**
)
累乗演算子(累乗演算子(**
)は、基数の累乗を計算できる。
<?php
$a = 2;
$b = 3;
$result = $a ** $b;
echo "累乗: " . $result; // 出力: 8
?>
インクリメント演算子とデクリメント演算子
インクリメント演算子とデクリメント演算子は、変数の値を1増加/減少させるために使用する。
プレインクリメントとポストインクリメントの2つの形式がある。
プレインクリメント: 変数の値を増加させてから、その値を返す。
<?php
$number = 5;
// プレインクリメント
echo ++$number; // 出力: 6
echo --$number; // 出力: 4
?>
ポストインクリメント: 変数の値を返した後で、値を増加させる。
<?php
$number = 5;
// ポストインクリメント
echo $number++; // 出力: 5
echo $number; // 出力: 6
echo $number--; // 出力: 5
echo $number; // 出力: 4
?>
論理演算子
-
&&
: 論理積(AND)。両方の条件が真であれば真を返す。 -
||
: 論理和(OR)。どちらかの条件が真であれば真を返す。 -
!
: 論理否定(NOT)。条件が偽であれば真を返す。
比較演算子
-
==
: 等しい。値が同じであれば真を返す。 -
===
: 厳密に等しい。値と型が同じであれば真を返す。 -
!=
: 等しくない。値が異なれば真を返す。 -
!==
: 厳密に等しくない。値または型が異なれば真を返す。 -
<
: 小さい。左側の値が右側の値より小さければ真を返す。 -
>
: 大きい。左側の値が右側の値より大きければ真を返す。 -
<=
: 以下。左側の値が右側の値以下であれば真を返す。 -
>=
: 以上。左側の値が右側の値以上であれば真を返す。
ビット演算子
ビット演算子は、整数値のビット単位での操作を行う。
&
: ビット論理積。対応するビットが両方とも1であれば1を返す。
// 初期値
$a = 60; // 0011 1100 in binary
$b = 13; // 0000 1101 in binary
// ビット論理積(AND)
$and = $a & $b;
echo "ビット論理積 (AND): " . $and . "\n"; // 出力: 12 (0000 1100 in binary)
|
: ビット論理和。対応するビットがどちらかが1であれば1を返す。
// ビット論理和(OR)
$or = $a | $b;
echo "ビット論理和 (OR): " . $or . "\n"; // 出力: 61 (0011 1101 in binary)
^
: ビット排他的論理和。対応するビットが異なれば1を返す。
// ビット排他的論理和(XOR)
$xor = $a ^ $b;
echo "ビット排他的論理和 (XOR): " . $xor . "\n"; // 出力: 49 (0011 0001 in binary)
~
: ビット反転。ビットを反転。
// ビット反転(NOT)
$not = ~$a;
echo "ビット反転 (NOT): " . $not . "\n"; // 出力: -61 (反転後のビット列)
<<
: ビット左シフト。ビットを左にシフト。
// ビット左シフト(<<)
$leftShift = $a << 2;
echo "ビット左シフト (<<): " . $leftShift . "\n"; // 出力: 240 (1111 0000 in binary)
>>
: ビット右シフト。ビットを右にシフト。
// ビット右シフト(>>)
$rightShift = $a >> 2;
echo "ビット右シフト (>>): " . $rightShift . "\n"; // 出力: 15 (0000 1111 in binary)
?:
)
三項演算子(三項演算子(?:
)は、条件式の結果に応じて値を返す。
形式は 条件式 ? 真の場合の値 : 偽の場合の値
<?php
$a = 10;
$b = ($a > 5) ? "大きい" : "小さい";
echo $b; // 出力: 大きい
?>
??
)
Null 合体演算子(Null 合体演算子(??
)は、左側のオペランドが null
の場合に右側のオペランドを返す。左側が null
でない場合は、左側の値を返す。
<?php
$a = null;
$b = $a ?? "デフォルト";
echo $b; // 出力: デフォルト
?>
制御構文
if文
if
文は、条件が真の場合に特定のコードブロックを実行するために使用する。
else
や elseif
を使って、複数の条件を扱うこともできる。
if (条件) {
// 条件が真の場合に実行されるコード
} elseif (別の条件) {
// 追加の条件が真の場合に実行されるコード
} else {
// どの条件も満たさない場合に実行されるコード
}
switch 文
switch
文は、式の値に基づいて複数の条件を評価し、一致するcase
ラベルのコードを実行する。
switch
文はbreak
を使用して各case
から脱出する。
default
ラベルは、どのcase
にも一致しない場合に実行されるコードブロックを指定する。
<?php
switch (式) {
case 値1:
// 値1が式の結果と一致する場合に実行されるコード
break;
case 値2:
// 値2が式の結果と一致する場合に実行されるコード
break;
// 必要に応じて追加のcase
default:
// どのcaseにも一致しない場合に実行されるコード
}
?>
match文
match
文は、PHP 8.0 以降で導入された構文で、switch
文の代わりに使う。
$変数 = match (比較対象) {
値1 => 結果1,
値2 => 結果2,
// 他のケース
default => デフォルト結果,
};
for文
for
文は、指定された回数だけコードブロックを繰り返すために使用する。
for (初期化; 条件; 増減) {
// 条件が真の場合に実行されるコード
}
foreach文
foreach
文は、配列やオブジェクトの各要素に対してコードブロックを実行するために使用する。
foreach ($配列 as $要素) {
// 各要素に対して実行されるコード
}
キーと値: 連想配列の場合、キーと値の両方にアクセスすることもできる。
<?php
$person = array("first_name" => "John", "last_name" => "Doe");
foreach ($person as $key => $value) {
echo $key . ": " . $value . " "; // 出力: first_name: John last_name: Doe
}
?>
配列
PHPの配列は、複数の値を1つの変数に格納できるデータ構造。
配列の要素はインデックスまたはキーでアクセスできる。
PHPでは、配列は数値配列と連想配列の2種類がある。
数値配列
数値インデックス(0から始まる整数値)を使用して要素にアクセスする配列です。
$array = array(value1, value2, value3, ...);
連想配列
キーとして文字列を使用して要素にアクセスする配列です。
$array = array("key1" => value1, "key2" => value2, ...);
関数
文字列操作関数
strlen($string)
文字列の長さを取得する。
$text = "Hello, world!";
echo strlen($text); // 13
strpos($haystack, $needle)
文字列内で部分文字列の最初の出現位置を特定する。
$text = "Hello, world!";
echo strpos($text, "world"); // 7
substr($string, $start, $length)
文字列の一部分を返す。
$text = "Hello, world!";
echo substr($text, 7, 5); // world
str_replace($search, $replace, $subject)
文字列内の全ての一致する部分文字列を置換する。
$text = "Hello, world!";
echo str_replace("world", "PHP", $text); // Hello, PHP!
trim($string)
文字列の先頭および末尾から空白文字を取り除く。
$text = " Hello, world! ";
echo trim($text); // "Hello, world!"
配列操作関数
array_merge($array1, $array2)
2つの配列をマージする。
$array1 = [1, 2, 3];
$array2 = [4, 5, 6];
$result = array_merge($array1, $array2);
print_r($result); // [1, 2, 3, 4, 5, 6]
array_diff($array1, $array2)
2つの配列の差異を計算する。
$array1 = [1, 2, 3, 4];
$array2 = [2, 4, 6];
$result = array_diff($array1, $array2);
print_r($result); // [1, 3]
array_map($callback, $array)
配列の各要素にコールバック関数を適用する。
$array = [1, 2, 3, 4];
$result = array_map(function($num) {
return $num * 2;
}, $array);
print_r($result); // [2, 4, 6, 8]
array_filter($array, $callback)
コールバック関数で評価された要素のみを返す。
$array = [1, 2, 3, 4, 5];
$result = array_filter($array, function($num) {
return $num % 2 === 0;
});
print_r($result); // [2, 4]
array_keys($array)
配列の全てのキーを返す。
$array = ['a' => 1, 'b' => 2, 'c' => 3];
$result = array_keys($array);
print_r($result); // ['a', 'b', 'c']
array_push($array, $value)
配列の末尾に1つ以上の要素を追加する。
$numbers = array(1, 2);
array_push($numbers, 3, 4);
print_r($numbers); // [1, 2, 3, 4]
array_pop($array)
配列の末尾から1つの要素を削除し、その値を返す。
$numbers = array(1, 2, 3);
$last = array_pop($numbers);
echo $last; // 3
print_r($numbers); // [1, 2]
array_shift($array)
配列の先頭から1つの要素を削除し、その値を返す。
$numbers = array(1, 2, 3);
$first = array_shift($numbers);
echo $first; // 1
print_r($numbers); // [2, 3]
array_unshift($array, $value)
配列の先頭に1つ以上の要素を追加する。
$numbers = array(2, 3);
array_unshift($numbers, 1);
print_r($numbers); // [1, 2, 3]
array_slice($array, $offset, $length = null, $preserve_keys = false)
配列の一部分を返す。
$numbers = array(1, 2, 3, 4, 5);
$subset = array_slice($numbers, 2, 2);
print_r($subset); // [3, 4]
array_splice($array, $offset, $length = null, $replacement = array())
配列の指定した位置に要素を追加または削除する。
$numbers = array(1, 2, 3, 4, 5);
array_splice($numbers, 2, 2, array(6, 7));
print_r($numbers); // [1, 2, 6, 7, 5]
in_array($needle, $haystack, $strict = false)
配列内に特定の値が存在するかどうかを確認する。
$numbers = array(1, 2, 3, 4, 5);
$exists = in_array(3, $numbers);
echo $exists ? 'true' : 'false'; // true
array_key_exists($key, $array)
配列に特定のキーが存在するかどうかを確認する。
$person = array("first_name" => "John", "last_name" => "Doe");
$exists = array_key_exists("first_name", $person);
echo $exists ? 'true' : 'false'; // true
array_values($array)
配列の全ての値を返す。
$person = array("first_name" => "John", "last_name" => "Doe");
$values = array_values($person);
print_r($values); // ['John', 'Doe']
sort($array, $sort_flags = SORT_REGULAR)
配列を昇順にソートする。
$numbers = array(3, 1, 4, 1, 5, 9);
sort($numbers);
print_r($numbers); // [1, 1, 3, 4, 5, 9]
rsort($array, $sort_flags = SORT_REGULAR)
配列を降順にソートする。
$numbers = array(3, 1, 4, 1, 5, 9);
rsort($numbers);
print_r($numbers); // [9, 5, 4, 3, 1, 1]
asort($array, $sort_flags = SORT_REGULAR)
配列を値に基づいて昇順にソートし、キーを保持する。
$person = array("a" => 3, "b" => 1, "c" => 2);
asort($person);
print_r($person); // ['b' => 1, 'c' => 2, 'a' => 3]
ksort($array, $sort_flags = SORT_REGULAR)
配列をキーに基づいて昇順にソートする。
$person = array("b" => 1, "a" => 3, "c" => 2);
ksort($person);
print_r($person); // ['a' => 3, 'b' => 1, 'c' => 2]
array_reduce($array, $callback, $initial = null)
配列の要素を反復処理し、1つの値に縮約する。
$numbers = array(1, 2, 3);
$sum = array_reduce($numbers, function($carry, $item) {
return $carry + $item;
}, 0);
echo $sum; // 6
日付と時刻操作関数
date($format, $timestamp)
指定されたフォーマットで日付を返す。
echo date('Y-m-d'); // 現在の日付を "YYYY-MM-DD" 形式で表示
strtotime($time, $now)
文字列をUnixタイムスタンプに変換する。
$timestamp = strtotime('2024-12-31');
echo date('Y-m-d', $timestamp); // 2024-12-31
time()
現在のUnixタイムスタンプを返す。
echo time(); // 現在のUnixタイムスタンプ
mktime($hour, $minute, $second, $month, $day, $year)
指定された日時のUnixタイムスタンプを返す。
$timestamp = mktime(0, 0, 0, 12, 31, 2024);
echo date('Y-m-d', $timestamp); // 2024-12-31
ファイルシステム関数
fopen($filename, $mode)
ファイルを開く
$handle = fopen('example.txt', 'r');
if ($handle) {
// ファイル操作
fclose($handle);
}
fwrite($handle, $string)
ファイルを書き込む
$handle = fopen('example.txt', 'w');
fwrite($handle, 'Hello, world!');
fclose($handle);
fread($handle, $length)
ファイルからデータを読み取る。
$handle = fopen('example.txt', 'r');
$content = fread($handle, filesize('example.txt'));
fclose($handle);
echo $content;
fclose($handle)
ファイルを閉じる。
$handle = fopen('example.txt', 'r');
// ファイル操作
fclose($handle);
file_get_contents($filename)
ファイル全体を文字列として読み込む。
$content = file_get_contents('example.txt');
echo $content;
数学関数
abs($number)
絶対値を返す。
echo abs(-5); // 5
round($val, $precision)
指定した精度で数値を丸める。
echo round(3.14159, 2); // 3.14
max($array)
配列の最大値を返す。
$array = [1, 2, 3, 4, 5];
echo max($array); // 5
min($array)
配列の最小値を返す。
$array = [1, 2, 3, 4, 5];
echo min($array); // 1
rand($min, $max)
乱数を生成する。
echo rand(1, 10); // 1から10の間のランダムな数
セッション関数
session_start()
新しいセッションを開始または既存のセッションを再開する。
session_start();
$_SESSION['user'] = 'John Doe';
session_destroy()
セッションを破棄する。
session_start();
session_destroy();
$_SESSION
現在のセッションに関連する変数を格納する。
session_start();
$_SESSION['user'] = 'John Doe';
echo $_SESSION['user']; // John Doe
エラーハンドリング関数
error_reporting($level)
エラーレポートのレベルを設定する。
error_reporting(E_ALL);
set_error_handler($callback)
ユーザー定義のエラーハンドラを設定する。
set_error_handler(function($errno, $errstr) {
echo "Error [$errno]: $errstr";
});
trigger_error($message, $type)
ユーザー定義のエラーを生成する。
trigger_error("This is a custom error.", E_USER_WARNING);
その他の関数
isset($var)
変数が設定されているかどうかを調べる。
$var = 'Hello';
echo isset($var); // true
empty($var)
変数が空かどうかを調べる。
$var = '';
echo empty($var); // true
include($file)
指定されたファイルをインクルードする。
include 'header.php';
require($file)
指定されたファイルをインクルードする(致命的なエラーを発生させる)。
require 'config.php';
Discussion