2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHP 基礎文法

Posted at

前提

PHPの復習的備忘録となります。
間違い等あればご指摘ください。

基礎

基礎
<?php  
  // コード記述
> // 閉じタグはHTMLと同時記載しない場合は不要

//  〜コメント
#  〜コメント(行末まで)
/*  範囲コメント  */

// 変数
$変数名 = 変数;

// 出力
echo 'hello world' . PHP_EOL;
// . ピリオドで連結 PHP_EOLは改行
// " ' を使い分け('使用時は”で囲む)
$w = 'world';
echo "hello $w" . PHP_EOL; // hello world
echo "It's \"Friday\".\tHello $w " . PHP_EOL;
// 内部に変数使用時には " "で囲む
// " => \"   タブ=> \t
ヒアドキュメント
$text = <<<EOT   // 'EOT':変数不可  "EOT",EOT:変数可

  // 長めのテキスト(改行や字下げも保持)

EOT;   // 終端記号(改行必須、コメント不可)...文字自体は自由
計算
echo 10 + 3 . PHP_EOL; // 13
echo 10 - 3 . PHP_EOL;  // 7
echo 10 * 3 . PHP_EOL; // 30
echo 10 / 3 . PHP_EOL; // 3.333...
echo 10 % 3 . PHP_EOL;  // 1
echo 10 ** 3 . PHP_EOL; // 1000 乗算
echo (2 + 10) * 3 . PHP_EOL; // ()優先
echo 2 +'3' . PHP_EOL; // 5 
//文字列でも数値っぽいものは数値化して計算する

// 自己代入
$price += 100;
$price -= 100;
// ±1
$price++;
$price--;

定数
// 大文字で定義、どちらか2パターン
define('NAME','tomo');
const NAME = 'tomo';
データ型
文字列 string 'hello', "world"
整数 int 2, 4, -10
浮動小数点 float 2.5, -4.2
null null
真偽値 bool true,false
配列 array [3,6,2]
オブジェクト object new Object()
型確認
var_dump($変数)  // 型(数値or文字数)文字列

// キャスト(型変換)
// 値の前に()で型指定
$a = (float)20;      
$b = (string)2.5; 
var_dump($a);  // float(20)
var_dump($b);  // string(3) "2.5"

if文
if (条件①){
  // 条件①がtrueの場合の処理
} else if (条件②) {
  // 条件②がtrueの場合の処理
} else {
  // どれも当てはまらない場合の処理
}      // if 文は末尾 ; 不要

比較演算子、真偽値、論理演算子
>= // 以上
<= // 以下
> // より大きい
< // より小さい
=== // 等しい
!== // 異なる

$X = 3 ;
if ( $X ) {  ...      
// 単一文字,数字でも可
// false , ±0, ± 0.0, '0' , ' ' , null , [ ] , はfalse, 以外はtrue
// 条件式や値は真偽値として評価される

&& and  // かつ
|| or   // もしくは
!     // 〜ではない
switch文

switch (①:変数など){
  case :
    // ①が❶の場合の処理
    break;   // breakを入れない場合、条件が2つ重なる
  case :
    // ①が❷の場合の処理
    break;
  case :
  case :    // 複数条件時はcaseを重ねる
    // ①が❸または❹の場合の処理
    break;
  default:
  // ①がどれにもあてはまらない場合の処理
    break;
}
for文
// for (定義; 条件 ; 変更){}
for ($i = 1 ; $i <= 3 ; $i++){
   // $iを1と定義して、$iが3以下の条件になるまで処理、処理後$i++
   規定回数 ループ処理
}
while文
while (条件①){
  条件が満たされるまで ループ処理
  条件①の変化 // 状態変化を付けないと無限ループ
}

do{
  1回処理を行った上で条件が満たされるまで ループ処理
  条件①の変化 
} while(条件①);   // ; が必要

スキップ・中断
for ($i = 1; $i <= 10; $i++) {
  if ($i === 4){
     if ($i % 3 === 0 ){
     continue;   // 処理をスキップ(当てはまる場合はその処理だけ飛ばす)
     break; // 処理を中断(当てはまる場合、その時点で処理を止める)
  }
  echo $i . PHP_EOL;
}
関数・引数・return
function 関数名(仮引数 = 'デフォルト値')
{
  // 繰り返し使用したい処理  (引数込)
  return 返したい処理;  // return時点で処理終了、値が戻る。
}

関数名(実引数);  // 呼び出し 
スコープ
$変数A = 1.1;  //グローバルスコープ 

function sum($a, $b, $c)
{
  global $変数A;  // global記述で外定義の変数使用できるが非推奨
  $変数A = 1.08;  // ローカルスコープ  ...内部で定義し直す
  return ($a + $b + $c)*$変数A; // 関数の外で定義された変数だと使用不可
}
echo sum(100, 200, 300) + sum(300, 400, 500) . PHP_EOL; 
 // 1944 ローカルスコープ が適用

無名関数
// function sum()のように名称定義しない関数

$sum = function ($a, $b, $c) { 
  return $a + $b + $c;
};  // 関数代入の場合 末尾 ; 必要
echo $sum(100,300,500) . PHP_EOL;  // 900
条件演算子
function sum($a, $b, $c) 
{
  $total =  $a + $b + $c;
  // if ($total < 0){
  //   return 0;
  // } else {
  //   return $total;
  // }
  
// こちらに書き換え可
  return $total < 0 ? 0 :$total;
}
echo sum(100,300,500) . PHP_EOL;   // 900
echo sum(-1000,300,500) . PHP_EOL;   // 0
型指定
declare(strict_types=1);  // 厳密な型付け設定

// 引数の型付けは値の前に型名をいれる
// : のあとに返り値の型も指定できるがない場合は void
function showPoint(string $name, int $point): void  
{
  echo $name . ': ' . $point . PHP_EOL;
}

// showPoint('tomo',20);
// showPoint('tomo','tomotomo');  // 型指定しない場合でも処理してしまう
// 引数の型指定でエラーにできるが
showPoint('tomo','6');  // 文字列でも数値っぽい場合は処理できる
// 処理させたくない場合はdeclare〜で厳密な型付け設定に。
null渡し

declare(strict_types=1);

function getPoint(int $point): ?string    // null or string という設定
{
  return $point >= 100 ? 'Good' : null ;
}

echo getPoint(150) . PHP_EOL; // Good
echo getPoint(40) . PHP_EOL; // nullでエラーになるので、
// 「?型」 設定でnullも渡せるようにする 引数でも使用可
配列・キー
// 同種データをまとめたもの
$scores = [   
  30,   
  60,
  100,  // 最後も , を入れると管理しやすい
  ];      
$scores[0] = 50; // 代入で変更可

$scores = [
  'first' => 30,  // 添字ではなくキーで管理可
  'second' => 60,
  'third' => 100,
];
$scores['second']   // 60
foreach
// $scores の要素を$scoreに繰り返し代入して処理
foreach ($scores as $score){
  echo $score . PHP_EOL;
}
// key も出力可能
foreach ($scores as $key => $score){
  echo $key . '--' . $score . PHP_EOL;
}
要素展開

// 配列内配列
$配列名 = [,,[③、④],];
$配列名[0] => 
$配列名[2][0] => 

// 配列に別配列の要素を展開する場合 
$配列A = [a,b,c];
$配列B = [,,...$配列A, ]; // [①,②,a,b,c,③]

可変長引数
//可変長引数 引数が幾つでも可
// function sum($a, $b, $c) ではなく
function sum(...$numbers) 
{
  // return $a + $b + $c;
  $total = 0;
  forEach ($numbers as $number){
    $total += $number;
  }
  return $total;
}

複数返り値
function getNum(...$numbers)
{
  $total = 0;
  foreach ($numbers as $number) {
    $total += $number;
  }
  return [$total, $total / count($numbers)];   // 返り値を配列代入
}

list($sum, $average) = getNum(1,2,3); // こちらか
[$sum, $average] = getNum(1,2,3);   // こちらのパターンで代入

echo $sum . PHP_EOL;  // 6
echo $average . PHP_EOL;  // 2

参考

ドットインストール

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?