プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • PHP
  • 【PHP】「変数」、「定数」、「配列」、「連想配列」、「条件分岐」、「論理演算子」、「ファ…
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【PHP】「変数」、「定数」、「配列」、「連想配列」、「条件分岐」、「論理演算子」、「ファイル操作」

05.05

  • miyabisan2
  • コメントを書く

この記事は4分で読めます

出力

printとecho二つあります。結論どちらも大して違いはありませんが、戻り値を返すかと引数を複数取れるかの違いがあります。

print

戻り値は常に1を返します。引数は一つしか取れません。C言語の名残で残っている関数です。

1
print('こんにちは');

echo

戻り値がvoidなので値を返さないです。また引数を複数とることも可能です。(下の例なら12を返します。)

1
echo 1,2;

文字列のコーテーション

シングルコーテーション

単純な文字列になります。特別な理由がなければこれを使いましょう。

ダブルコーテーション

改行コードなどを入れることが可能です。

1
echo "こんにちは、\n2行目"

また、中括弧で囲ってあげることで変数の式展開も可能です。

1
2
$hensu = "テスト3";
echo "{$hensu}です。"

変数

1
2
3
4
5
6
7
8
9
//数字
$num = 123;
echo $num;
 
echo("<br>");
 
//文字
$str = '文字';
echo $str;

変数の型を調べる

PHPは動的型付けの言語なので直接型を指定しませんが、代入したら型が決まっています。var_dumpという関数を使う事でどんな型かを調べる事が可能です。

1
2
3
4
echo("<br>");
var_dump($num); //int(123)
echo("<br>");
var_dump($str); //string(6) "文字"

変数の命名規則

  • 先頭の文字は必ず「英字」か「_(アンダーバー)」にする。(数字だとエラーになります。)

変数同士を結合する。

.(ピリオド)を使えば文字を結合する事ができます。ただし、仮に数字同士を結合したとしても文字列型(string)になります。

1
2
3
4
5
6
//数字
$num1 = 123;
$num2 = 456;
$num3 = $num1 . $num2;
echo($num3); //123456
var_dump($num3); //string(6) "123456" ←文字列になる。

.(ピリオド)を使えば文字を結合する事ができます。仮に数字同士を結合したとしても文字列型(string)になります。

1
2
3
4
5
6
//数字
$num1 = 123;
$num2 = 456;
$num3 = $num1 . $num2;
echo($num3); //123456
var_dump($num3); //string(6) "123456"

変数のスコープ

変数のスコープは下記の2つに分かれます。

  • グローバルスコープ
  • ローカルスコープ

グローバルスコープ

何のブロックにも囲まれていない変数です。

ローカルスコープ

関数等のブロックの中に含まれている変数です。そのブロック内でのみしか参照ができません。

例

1
2
3
4
5
6
7
$global_val = "グローバル";
 
function kansu(){
  $local_val = "ローカル";
}
echo $global_val; //グローバル
echo $local_val;  //何も出力されない

実務では使うことはありませんが、下記のようにglobalキーワードを使えば関数内でもグローバルスコープの変数を使用する事が可能です。

1
2
3
4
5
6
7
8
$global_val = "グローバル";
 
function kansu(){
  $local_val = "ローカル";
  global $global_val;
  echo $global_val; //グローバル
}
kansu();

定数

定数はconstキーワードを使います。一度定義した定数を上書きをすることはできません。

1
2
3
4
5
const MAX = 10;
echo MAX;
echo("<br>");
const STR = 'あいう';
echo STR;

また、レガシーな定数定義構文に「define」がありますが関数なのでconstより速度が落ちるので使える環境であればできるだけconstを利用するようにしましょう。

配列

定義方法

1
2
$array = [1,2,3];
echo $array[0]; //1

配列の中のデータをまとめてみる。

echoだと一つ一つしか確認する事ができませんが、var_dumpを使えばまとめて確認する事が可能です。

1
2
$array = [1,2,3];
var_dump($array); //array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }

preタグで見やすくする。

そのままvar_dumpを使っただけだと見づらいのでpreタグで囲うことで縦に並べて見やすくする事が可能です。

1
2
3
echo("<pre>");
var_dump($array); //array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
echo("</pre>");

多次元配列を使う

1
2
$array = [[1,2,3],[4,5,6]];
var_dump($array); //array(2) { [0]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } [1]=> array(3) { [0]=> int(4) [1]=> int(5) [2]=> int(6) } }れ

array_push

配列の末尾に新しい要素を追加する事が可能です。

1
2
3
$array = ['太郎','次郎'];
array_push($array,'三郎');
var_dump($array); //array(3) { [0]=> string(6) "太郎" [1]=> string(6) "次郎" [2]=> string(6) "三郎" }

foreach

foreachを使えば一つ一つ配列の要素を取り出せます。

1
2
3
4
$array = ['太郎','次郎'];
foreach ($array as $value){
  echo $value; // 太郎など
}

連想配列

定義方法

1
2
3
4
5
6
$person = [
  'name' => '太郎',
  'age' => 25
];
echo $person['name']; //太郎
var_dump($person); //array(2) { ["name"]=> string(6) "太郎" ["age"]=> int(25) }

入れ子にする。

1
2
3
4
5
6
7
8
9
10
11
$persons = [
  'person1' => [
    'name' => '太郎',
    'age' => 25  
  ],
  'person2' => [
    'name' => '花子',
    'age' => 23
  ]
];
var_dump($persons); //array(2) { ["person1"]=> array(2) { ["name"]=> string(6) "太郎" ["age"]=> int(25) } ["person2"]=> array(2) { ["name"]=> string(6) "花子" ["age"]=> int(23) } }

foreach

foreachを使えば連想配列から値の一覧を取得する事が可能です。

1
2
3
4
5
6
7
8
9
10
echo("<br>");
echo("<br>");
$persons = [
  'name' => '太郎',
  'age' => 25  
];
foreach($persons as $key => $value){
  echo $key; //nameやage
  echo $value; //太郎や25
}

条件分岐

if文

1
2
3
4
5
6
7
8
$a = 5;
if ( $a == 5 ){
  echo "5です。";
} else if($a ==3){
  echo "3です。";
}else{
  echo "5ではありません。";
}

elseやelse ifは使えますが可読性の点からあまり使わない方が良いと言われています。下記のようにifのみ使って記述するようにリファクタリングすると良いでしょう。

1
2
3
4
5
6
7
if ( $a == 5 ){
  echo "5です。";
}
 
if($a ==3){
  echo "3です。";
}

三項演算子

1
条件 ? 真 : 偽

switch文

PHPのswitch文は注意すべき点があるのでできればif文を使うようにすると良いでしょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$m = 2;
switch($m){
  case 1:
    echo '1です。';
    break;
  case 2:
    echo '2です。';
    break;
  case 3:
    echo '3です。';
    break;
  default:
    echo 'その他です';
    break;
}

上記のように記述すると型も含めて判定をする事ができません。型も含めて判定したい場合は下記のように記述します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$m = 2;
switch($m){
  case $m === 1:
    echo '1です。';
    break;
  case $m === 2:
    echo '2です。';
    break;
  case $m === 3:
    echo '3です。';
    break;
  default:
    echo 'その他です';
    break;
}

empty

emptyメソッドを使う事で変数が空白かどうか判定します。

1
2
3
4
$b;
if(empty($b)){
  echo "値が空です";
}

論理演算子の種類

種類説明

!=

ではない場合

!==

値と型が異なっているかどうかチェックする。

==

値が一致しているかチェックする。

===

値と型が一致しているかチェックする。

&&

かつ(andという記述法でも良いが&&の方が多いです。)

||

または(orという記述法でも良いが||の方が多いです。)

ファイル操作の種類

PHPでのファイル操作は下記3種類のいずれかで行います。

  • ファイル名型(ファイルごと)
  • ストリーム型(1行ごと)
  • オブジェクト型

ファイル名型

一番手軽にファイル操作する事ができます。

  • file_get_contents
  • file_put_contents

file_get_contents

ファイル内容を一括で全て出力できます。

1
2
$file = '.contact.dat';
echo file_get_contents($file); //ファイル内容が出力される。

file_put_contents

上書き

ファイルに第二引数で指定した内容を出力する事が可能です。ただ、全て上書きする挙動になるので注意です。

1
file_put_contents($file,"出力します。");
追記

第三引数にFILE_APPENDと指定する事で追記する事が可能です。\nで改行する事が可能です。

1
file_put_contents($file,"\n追記します。",FILE_APPEND);

ストリーム型

  • fopen
  • flock
  • fclose
  • fgets
  • fwrite

fopen

  • ファイルを開く
  • 読み取り専用か、書き込み専用か指定できます。

flock

  • 排他制御とする。
  • 他の誰かが開いていた場合に使えます。

fclose

  • ロックを解除する。

実装例

1
2
3
$contents = fopen($file,'a+');
fwrite($contents,"\n".'追記');
fclose($contents);

オブジェクト型

SplFileObject

スポンサーリンク
  • 2020 05.05
  • miyabisan2
  • コメントを書く
  • PHP
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 05.04

    【PHP】基本的なフォーム処理

  2. 2020 05.04

    【PHP】フォームのセキュリティ対策

  3. 2020 05.05

    【PHP】データベース接続(PDO)について

  4. 2020 05.04

    【PHP】「関数」(文字列操作関数など)、クラス

  5. 2023 10.02

    【PHP】デバッグ方法まとめ

  6. 2023 10.02

    【FuelPHP】概要

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【PHP】フォームのセキュリティ対策

【PHP】データベース接続(PDO)について

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー