XAMPPの初期設定をしよう

XAMPPをインストールしてローカル開発環境を作ろう」の記事の続きで、今回は初期設定を行っていきます。
セキュリティ設定・文字化け対策・タイムゾーンの設定を行っていきます。

セキュリティ設定

サイドメニューのセキュリティをクリックします。
XAMPP初期設定キャプチャ1

 

ページ中段の「http://localhost/security/xamppsecurity.php」をクリックします。
もしページが文字化けしている場合は、ブラウザのエンコードをsjisに変更してみてください。

XAMPP初期設定キャプチャ2

 

ID・パスワードの設定画面で、①~④の順番に、入力・クリックを行います。
ID・パスワードは後に使いますので必ずメモを取っておいて下さい。

XAMPP初期設定キャプチャ3

 

ここまで完了したらXAMPPのコントロールパネルでApacheとMySQLを再起動(stopをクリックして再度startをクリック)でセキュリティの設定が完了です。

XAMPPキャプチャ9

MYSQLとPHPの初期設定

XAMPPをインストールしたディレクトリ「\xampp\mysql\bin」の中に「my.ini」というファイルがありますのでテキストエディタで編集します。

[client]の下に下記を追加します。
default-character-set=utf8
[mysqld]の下に下記を追加します
character-set-server=utf8
skip-character-set-client-handshake
[mysqldump]の下に下記を追加します。
default-character-set=utf8
[mysql]の下に下記を追加します。
default-character-set=utf8

さらに、「\xampp\php」の中に「php.ini」というファイルがありますので続けて編集します。

下記の「;」を削除して有効にします。
;mbstring.language = Japanese
 ↓
mbstring.language = Japanese
下記の「;」を削除して有効にし、EUC-JPをUTF-8に変更します。
;mbstring.internal_encoding = EUC-JP
 ↓
mbstring.internal_encoding = UTF-8
下記の「;」を削除して有効にします。
;mbstring.http_input = auto
 ↓
mbstring.http_input = auto
下記の「;」を削除して有効にし、SJISをUTF-8に変更します。
;mbstring.http_output = SJIS
 ↓
mbstring.http_output = UTF-8
下記の「;」を削除して有効にします。
;mbstring.encoding_translation = Off
 ↓
mbstring.encoding_translation = Off
下記の「;」を削除して有効にします。
;mbstring.detect_order = auto
 ↓
mbstring.detect_order = auto
下記の「;」を削除して有効にします。
;mbstring.substitute_character = none
 ↓
mbstring.substitute_character = none
下記の「;」を削除して有効にします。
;mbstring.func_overload = 0
 ↓ 
mbstring.func_overload = 0
下記のOnをOffにします。
expose_php=On
 ↓ 
expose_php=Off
下記のEurope/BerlinをAsia/Tokyoに変更します。
date.timezone=Europe/Berlin
 ↓
date.timezone=Asia/Tokyo

ここまで完了したらXAMPPのコントロールパネルでApacheとMySQLを再起動(stopをクリックして再度startをクリック)でMYSQLとPHPの初期設定が完了です。

XAMPPキャプチャ9

実際にhtmlやphpを表示する方法については「XAMPPを使ってhtmlやphpをブラウザで表示してみよう」をご覧ください。

PHP 比較演算子の使い方

「比較演算子」の使い方です。

比較演算子とは、左辺(左の値)と右辺(右の値)を比べて、正しければtrueを返す演算子です。
比較演算子には「==」「===」「!=」「!==」「<」「<=」「>」「>=」があります。
通常数学で「等しい」を指すイコール「=」はPHPでは代入演算子といい、
右辺を左辺に代入するという意味になりますので注意しましょう。

それでは1つずつ見て行きましょう。

==

「==」は左辺と右辺が等しい時にtrueを返します。
ちょっと変な例ですが、下記は5と5を比べて結果(true)を$xに代入する形になります。

<?php
    $x = 5 == 5;
    
    // var_dumpでtrueが入っているか確認します。
    var_dump($x);

/*
上記は「var_dump(5 == 5);」としても同じなので以降はこの形で結果を表示していきます。
*/
?>

» 実行結果
次に5と4を比べて結果を表示します。

<?php
    var_dump(5 == 4);
?>

» 実行結果

このように、比較演算子は結果が正しければtrueを、間違っていればfalseを返します。
しかし「==」はすこし曖昧で、「変数の使い方」の中で「trueは1でもある」と書きましたが、0・false・null・空文字以外はtrueと判断してしまうのです。その為下記の場合、trueを返してしまいます。

<?php
    var_dump(1 == true);
?>

» 実行結果

===

論理値を比較する時はもっと厳密に比較する必要があります。
その際に使用するのが「===」で、データ型と値の両方が等しい場合のみにtrueを返してくれます。

<?php
    // 厳密に比較することでfalseを返してくれます。
    var_dump(1 === true);
?>

» 実行結果

データ型を比較しますので、文字列の1と数値の1を比較してもfalseが返ってきます。

<?php
    $x = "1"; // 文字列の1を$xに代入
    $y = 1;   // 数値の1を$yに代入

    // 「==」で比較するとtrueが返ってきます。
    var_dump($x == $y);
    echo "<br>\n";

    // 「===」で比較するとfalseが返ってきます。
    var_dump($x === $y);
?>

» 実行結果

!=

「!=」は左辺と右辺が等しくない時にtrueを返します。

<?php
    // 5と4は等しくないのでtrueを返します。
    var_dump(5 != 4);
?>

» 実行結果

!==

「!==」はデータ型と値の両方が等しくない場合にtrueを返します。

<?php
    $x = "1"; // 文字列の1を$xに代入
    $y = 1;   // 数値の1を$yに代入

    // 「!=」で比較すると等しいと判断されfalseが返ってきます。
    var_dump($x != $y);
    echo "<br>\n";

    // 「!=」で比較すると等しくないと判断されtrueが返ってきます。
    var_dump($x !== $y);
?>

» 実行結果

<

「<」は左辺が右辺より小さい時にtrueを返します。 [php] <?php // 4は5より小さいのでtureを返します。 var_dump(4 < 5); echo "<br>\n"; // 5は5より小さくはないのでfalseを返します。 var_dump(5 < 5); ?> [/php] » 実行結果

<=

「<=」は左辺が右辺より小さい もしくは 等しい場合にtrueを返します。 [php] <?php // 4は5より小さいのでtureを返します。 var_dump(4 <= 5); echo "<br>\n"; // 5と5は等しいのでtrueを返します。 var_dump(5 <= 5); ?> [/php] » 実行結果

>

「>」は左辺が右辺より大きい場合にtrueを返します。

<?php
    // 5は4より大きいのでtureを返します。
    var_dump(5 > 4);
    echo "<br>\n";

    // 5は5より大きくはないのでfalseを返します。
    var_dump(5 > 5);
?>

» 実行結果

>=

「>=」は左辺が右辺より大きい もしくは 等しい場合にtrueを返します。

<?php
    // 5は4より大きいのでtureを返します。
    var_dump(5 >= 4);
    echo "<br>\n";

    // 5と5は等しいのでtrueを返します。
    var_dump(5 >= 5);
?>

» 実行結果

最後に

これまでの例は数値でしたが、「==」「===」「!=」「!==」については文字列での比較も可能です。

<?php
    $x = "こんにちは";

    var_dump($x == "こんにちは");
?>

» 実行結果

PHP 改行、タブ(エスケープシーケンス)の使い方

「改行、タブ(エスケープシーケンス)」の使い方です。

PHPの記述で改行しても、HTMLでは改行されません。
改行しない例です。

<?php
    echo "<p>改行の例です。</p>";
    echo "<p>改行の例です。</p>";
?>

» 実行結果
ソースを見るとわかりますが、HTMLでは改行されていません。

このままでは可読性を損ねますので改行します。改行は「\n」です。

<?php
    echo "<p>改行の例です。</p>\n";
    echo "<p>改行の例です。</p>\n";
?>

» 実行結果
見やすくなりましたね。

さらにタブ「\t」でインデントを付けてみます。

<?php
    echo "\t<p>改行の例です。</p>\n";
    echo "\t<p>改行の例です。</p>\n";
?>

» 実行結果

無事インデントがつきました。

このように「\」(バックスラッシュ)プラス一文字で使える特殊な文字をエスケープシーケンスといいます。
エスケープシーケンスは、「’」(シングルクォーテーション)で囲まれていても展開されず、そのまま表示されてしまいますので必ず「”」(ダブルクォーテーション)で囲むようにしましょう。

<?php
    // 「'」(シングルクォーテーション)では展開せずそのまま表示されてしまいます。
    echo '\t<p>改行の例です。</p>\n';
    echo '\t<p>改行の例です。</p>\n';
?>

» 実行結果

他にも下記のようにPHPで使う記号をHTMLとして表示させるにはPHPの記述ではないと言う宣言をするために、「\」でエスケープする必要があります。

  • 「¥¥」 ¥マーク
  • 「¥$」 $マーク
  • 「¥(」 左かっこ
  • 「¥)」 右かっこ
  • 「¥[」 左かっこ
  • 「¥]」 右かっこ
  • 「¥’」 シングルクォーテーション
  • 「¥”」 ダブルクォーテーション

PHP 連想配列の使い方

「連想配列」の使い方です。

連想配列とは、配列の添え字(キー)に数値ではなく、文字列で名前を付けた配列のことです。
添え字を文字列で付けるには、配列に入れる中身の前に「”添え字”=>」とします。
例として、名前、電話番号、メールアドレスを配列として変数$statusに入れてみます

<?php
    $status = array("name"=>"tanaka", "tel"=>"090-0000-0000", "email"=>"xxxxx@xxx.com");
?>

連想配列の中身を取り出すには変数の後に[]を付けて中に添え字を書きます。
添え字は文字列の場合、ダブルクォーテーションかシングルクォーテーションで囲む必要があります。

<?php
    $status = array("name"=>"tanaka", "tel"=>"090-0000-0000", "email"=>"xxxxx@xxx.com");
    echo "私の名前は".$status["name"]."です<br>";
    echo "私の電話番号は".$status["tel"]."です<br>";
    echo "私のメールアドレスは".$status["email"]."です";
?>

» 実行結果

1つだけ中身を入れ替える場合は、通常の配列と同じように変数の後に[]を付けてその中に添え字を書きます。

<?php
    $status = array("name"=>"tanaka", "tel"=>"090-0000-0000", "email"=>"xxxxx@xxx.com");
    
    // 実は名前がsasakiでした
    $status["name"] = "sasaki";

    echo "私の名前は".$status["name"]."です<br>";
    echo "私の電話番号は".$status["tel"]."です<br>";
    echo "私のメールアドレスは".$status["email"]."です";
?>

» 実行結果

添え字をつけた値とつけていない値を同時に配列に入れた場合、どうなるかを見てみましょう。
先程の例の最初に10を、最後に数値の100を追加しました。var_dump()で表示してみます。

<?php
    $status = array(10, "name"=>"tanaka", "tel"=>"090-0000-0000", "email"=>"xxxxx@xxx.com",100);
    var_dump($status);
?>

» 実行結果
添え字が[0]→[name]→[tel]→[email]→[1]の順番に並んでいますね。書かれた順番通りです。配列の順番はforeachなどで取り出す時に重要になってきますのでどのようになるか覚えておきましょう。
foreachについては「foreachの使い方」をご覧ください。

PHP 配列(array)の使い方

「配列(array)」の使い方です。

変数の使い方」の記事で変数は「箱」みたいなものと表現しましたが、配列(array)は箱のなかにある区切りみたいなもので、その一つ一つに番号もしくは名前を付けることで、箱の中身を1つずつ取り出すことができます。番号は0から連番で自動的に振られ、名前は任意で付けることができます。

では、使い方を見ていきましょう。arrayの()の中に「,」で区切って値を入れます。

<?php
    $array = array(1,2,3);
?>

上記はこんなイメージです↓
array_img
番号0の区切りに1が入り、番号1の区切りに2が入り、番号2の区切りに3が入りました。番号が0から開始されることに注意して下さい。
[]を使うことで、中身を1つずついれることができます。
下記は前述と同じ意味になります。

<?php
    $array[] = 1;
    $array[] = 2;
    $array[] = 3;
?>

上記はなんだか上書きされそうに見えますが、空の[]を使うことで、「その配列の最大の番号に1を足した番号の区切り」に値を入れてくれます。(空の場合は0です)

中身を取り出す時は変数に[]を付けて、その中に取り出したい区切りの番号を書きます。
区切り番号0の中身「1」を表示させたい場合は下記にように書きます。

<?php
    $array = array(1,2,3);
    echo "区切り番号0の中身は".$array[0]."です";
?>

» 実行結果

また、配列の中身を1つだけ変更したいときには[]に区切りの番号を書いて上書きをすることができます。

<?php
    $array = array(1,2,3);

    // 実は2ではなく20だったので上書き
    $array[1] = 20;

    echo "区切り番号1の中身は".$array[1]."です";
?>

» 実行結果

あまり使う場面はないと思いますが、区切りの番号を0以外から開始することも出来ます。

<?php
    $array[100] = 1;
    $array[] = 2; // 区切り番号100に1を足した101の中身に2が入ります。

    echo "区切り番号100の中身は".$array[100]."です<br>";
    echo "区切り番号101の中身は".$array[101]."です";
?>

» 実行結果

ちなみに配列の区切りの番号や名前の事を「添え字」や「キー」と呼びます。
添え字に数値ではなく文字で名前を付ける「連想配列」についてはこちらの「連想配列の使い方」をご覧ください。

PHP var_dumpの使い方

「var_dump」の使い方です。

var_dumpは()の中に書かれた変数等のデータ型と値を表示してくれる関数です。

<?php
    $x = "こんにちは"; // 文字列
    $y = 1; // 数値(整数)
    $z = 0.5; // 数値(少数)
    $true = true; // 論理値
    $false = false; // 論理値
    $null = null; // null
    $karamoji = ""; // 空文字
    $array = array(1, 2, 3); // 配列

    var_dump($x);
    echo "<br>";
    
    var_dump($y);
    echo "<br>";

    var_dump($z);
    echo "<br>";

    var_dump($true);
    echo "<br>";

    var_dump($false);
    echo "<br>";
    
    var_dump($null);
    echo "<br>";

    var_dump($karamoji);
    echo "<br>";

    var_dump($array);
    echo "<br>";
?>

» 実行結果

「string」は文字列で、()の中身が文字の長さになります。日本語はマルチバイトと呼ばれ、文字ごとにバイト数が違うため5文字なのに(15)が表示されていますね。

「int」は整数で、()の中身が変数に入っている値です。

「float」は少数で、()の中身が変数に入っている値です。

「bool」は論理値で、trueとfalseの2種類のみです。

「NULL」は何もない状態です。その次の空文字とは扱いが違いますので気をつけましょう。

「array」は配列で、()の中が入っている値の数です。{}の中身が配列に入っている値で、そのひとつひとつの添字(キー)とデータ型と中身を表示します。

var_dumpは開発中とてもよく使うので使い方を覚えておきましょう。

PHP defineの使い方

「define」の使い方です。

変数は中身を何度でも入れ替えることが出来ますが、プログラムの中で変わることのない値を「定数」として使用することがあります。
その定数の定義に関数の「define」を使用します。
関数の()の中の値を引数と呼ぶのですが、defineの1つ目の引数(第一引数)に定数名を、2つ目の引数(第二引数)にその中身を書きます。

<?php
    define("EMAIL","xxxx@xxx.com");
    echo EMAIL;
?>

» 実行結果

尚、定数名は大文字にすることが一般的です。

直接書くのではなく、定数を使うメリットは後に変更になった場合に全ての記述を変更する必要がなく、defineを修正するだけで済むと言う点ですね。

PHP コメントの使い方

PHPの「コメント」の使い方です。

コメントは処理に影響させずメモを書いたり、コードを無効にする時に使います。
あとから見直した時に書いてあるコードが何なのかひと目で分かるようにコメントを残すことが望ましいですね。
コメントを使ってコードを無効にすることをコメントアウトといいます。
コメントには「//」と「/* */」の2種類があり、「//」はその行のそれ以降をすべて無効にし、「/* */」は「/*」と「*/」の間に書いてあるものが無効になります。
1行を丸ごとコメントアウトする時や、行の最後にコメントを書くときに「//」を、行の途中や複数行をコメントアウトするときに「/* */」を使います。

<?php
    // ここは影響しません

    echo "コメントの書き方<br>"; // ここは影響しません。

    echo /*ここは影響しません*/ "コメントの書き方<br>";

    /*
    ここは影響しません
    ここは影響しません
    ここは影響しません
    */
?>

PHP 変数の使い方

「変数」の使い方です。

変数は「文字列」「数値」「論理値(true・false)」「null(何もない状態)」「配列」などを入れておくことができる「箱」のようなものです。
変数名は「$」ではじまり、英数字と「_」を利用できますが、「$」の直後は数字はダメというルールがあります。
変数に値を入れるには「=」を使用します。
変数に「文字列」「数値」「論理値」「null」「配列」を入れてechoで表示してみます。

<?php
    $x = "こんにちは"; // 文字列
    $y = 1; // 数値
    $true = true; // 論理値
    $false = false; // 論理値
    $null = null; // null
    $array = array(1, 2, 3); // 配列

    echo $x."<br>";
    echo $y."<br>";
    echo $true."<br>";
    echo $false."<br>";
    echo $null."<br>";
    echo $array."<br>";
?>

» 実行結果
変数$trueをechoで表示すると1が表示されていますね。
「trueは1でもある」ようです。しかし「trueは1」ではありません。
この違いが大きく出てしまう場合もあるので注意しましょう。
変数$falseと変数$nullをechoで表示してもなにも表示されていませんが、変数をより詳しく表示するvar_dumpを使えばその違いがわかります。
変数$arrayも配列の中身ではなくArrayと表示されてしまいますが、var_dumpを使用すれば配列の中身を確認することができます。
var_dumpについてはこちらの「var_dumpの使い方」をご覧ください。
配列についてはこちらの「配列(array)の使い方」をご覧ください。

※記述中にある「//」はコメントと呼ばれるもので、コメントについてはこちらの「コメントの使い方」をご覧ください。

尚、実行結果をわかりやすくするたに改行しましたが、変数と文字列・数字・変数などを連結するには「.」でつなぐ必要があります。
なので下記のようにするとエラーがでます。

<?php
    echo $x$y;
?>

 

また、変数は何度も中身を入れ替えることができます。

<?php
    $x = "おはようございます";
    echo $x."<br>";

    $x = "こんにちは";
    echo $x."<br>";
    
    $x = "こんばんは";
    echo $x;
?>

» 実行結果

PHP echoの使い方

「echo」の使い方です。

echoは文字列や数値を表示するときに使います。

<?php
    echo "こんにちは";
?>

» 実行結果

文字列はダブルクォーテーション「”」もしくはシングルクォーテーション「’」で囲む必要があります。

 

数値にはダブルクォーテーションやシングルクォーテーションは不要です。

<?php
    echo 1;
?>

» 実行結果

 

変数にもダブルクォーテーションやシングルクォーテーションは不要です。

<?php
    $x = "こんにちは";
    echo $x;
?>

» 実行結果

ダブルクォーテーションとシングルクォーテーションの違いについてはこちらの「改行、タブ(エスケープシーケンス)の使い方」を、変数についてはこちらの「変数の使い方」をご覧ください。