PHP

PHP 三項演算子の使い方

「三項演算子」の使い方です。

下記が三項演算子の書き方です。

条件 ? trueの場合に返す値 : falseの場合に返す値;

 
三項演算子を使用することで、下記のような一番簡単なif elseを一行で書くことができます。

<?php
    $x = 10;
    if($x == 10){
        echo "変数xは10です。";
    }else{
        echo "変数xは10ではありません。";
    }
?>

上記を三項演算子にすると下記になります。

<?php
    $x = 10;
    echo $x == 10 ? "変数xは10です。" : "変数xは10ではありません。";
?>

» 実行結果

ifの{}内のように、処理を行うのではなく、「値を返す」ということに注意してください。
三項演算子の中でechoを使うことは出来ませんので、下記のようにするとエラーになります。

<?php
    $x = 10;
    $x == 10 ? echo "変数xは10です。" : echo "変数xは10ではありません。";
?>

返ってきた値を変数に入れて使うのが一般的かもしれません。

<?php
    $x = 10;
    $y = $x == 10 ? "変数xは10です。" : "変数xは10ではありません。";
    echo $y;
?>

» 実行結果

三項演算子の中で代入や計算等を行うことは出来ます。
下記は、$xと$yを比べて大きい値から小さい値を引いた値を$zに加算代入したものをechoで表示するまでを一行で行っています。

<?php
    $x = 10;
    $y = 15;
    $z = 20;
    echo $z += $x < $y ? $y - $x : $x - $y ;
?>

» 実行結果

PHP ifを一行で書く方法

ifは一行で書くことも出来ます。

実はifは{}を省略することが出来ます。
下記は一般的なifの書き方です。

<?php
    $x = 10;
    if($x == 10){
        echo "変数xは10です。";
    }
?>

下記のように{}を省略し、一行で書くことが出来ます。

<?php
    $x = 10;
    if($x == 10) echo "変数xは10です。";
?>

» 実行結果

 
{}を省略することには賛否両論あるようですが、他人の書いたコードに含まれている可能性もありますので、「ん?」とならないように覚えておいて損はないと思います。

PHP ifの使い方

「if」の使い方です。

ifは()の中がtrueなら{}の処理を実行するという関数です。
よく条件分岐と言われます。
下記のように書きます。

<?php
    if(条件){
        処理;
    }
?>

 
例を見てみましょう。
下記の場合、()の中はtrueなので、処理が実行されます。

<?php
    $x = 10;
    if($x > 5){
        echo "変数xは5より大きい";
    }
?>

» 実行結果

 
続けてelseと書くことで、ifの()の中がfalseだった場合に実行される処理を書くことができます。

<?php
    $x = 10;
    if($x > 10){
        echo "変数xは10より大きい";
    }else{
        echo "変数xは10、もしくは10より小さい";
    }
?>

» 実行結果

 
また、elseifと書くことで、更に条件を指定することができます。

<?php
    $x = 10;
    if($x > 15){
        echo "変数xは10より大きい";
    }elseif($x > 5){
        echo "変数xは15より小さいが、5より大きい";
    }
?>

» 実行結果

<?php
    $now = "夜";
    if($now == "朝"){
        echo "おはよう";
    }elseif($now == "昼"){
        echo "こんにちは";
    }else{
        echo "こんばんは";
    }
?>

» 実行結果

 
()の中の条件「>」や「==」がよくわからない場合はこちらの「比較演算子の使い方」を参照してみてください。

PHP 代入演算子の使い方

「代入演算子」の使い方です。

代入演算子には「=」の他に、「+=」「-=」「*=」「/=」「%=」「.=」等の複合演算子があります。
一つずつ見て行きましょう。

+=

「+=」は左辺と右辺を足して左辺に代入する演算子です。
下記の2つは同じ意味です。

$x += $y; // $xと$yを足した値を$xに代入する
$x = $x + $y;

-=

「-=」は左辺から右辺を引いて左辺に代入する演算子です。
下記の2つは同じ意味です。

$x -= $y; // $xから$yを引いた値を$xに代入する
$x = $x - $y;

*=

「*=」は左辺に右辺を掛けて左辺に代入する演算子です。
下記の2つは同じ意味です。

$x *= $y; // $xに$yを掛けた値を$xに代入する
$x = $x * $y;

/=

「/=」は左辺を右辺で割って左辺に代入する演算子です。
下記の2つは同じ意味です。

$x /= $y; // $xを$yで割った値を$xに代入する
$x = $x / $y;

%=

「%=」は左辺を右辺で割った余りを左辺に代入する演算子です。
下記の2つは同じ意味です。

$x %= $y; // $xを$yで割った余りの値を$xに代入する
$x = $x % $y;

.=

上記は全て数値の計算でしたが、「.=」は文字列が入っている変数で使用します。
「.=」は左辺と右辺を連結した値を左辺に代入する演算子です。
下記の2つは同じ意味です。

$x .= $y; // $xと$yを連結した値を$xに代入する
$x = $x.$y;

ここで気をつけなければならないことは、変数に入っている値が数値であっても「.=」または「.」を使うことにより文字列に変わってしまうということです。

<?php
    $x = 1;
    $y = 2;

    $x .= $y;
    var_dump($x);
?>

» 実行結果

XAMPPで複数のサイトを制作しよう

XAMPPで複数のサイトを制作する方法を見ていきます。

XAMPPを使ってhtmlやphpをブラウザで表示してみよう」で書いたように、XAMPPは初期状態では複数のサイトを制作することに不都合がありますので、「xampp/htdocs/hoge/」に対してドメインをあてたいと思います。

hostsを編集しよう

windowsXP~8であれば「C:/WINDOWS/system32/drivers/etc/」の中にhostsというファイルがありますので、テキストエディタで開き、一番下に「127.0.0.1」と「あてたいドメイン名」を追加します。例えば「xampp/htdocs/hoge/」に対してlocal.devというドメインをあてたい場合は、

127.0.0.1 local.dev

を追加します。
これは「local.dev」にアクセスしたら127.0.0.1に繋げなさいという意味です。
127.0.0.1というのはお使いのPCのローカルホスト「http://localhost」のことです。
「.dev」というドメインは実際にはないと思うのですが構いません。.devを消して「local」だけでも構いません。
但し、実際に存在するドメイン(google.comなど)をhostsの中に記述してしまうと、そのサイトにアクセスできなくなってしまうので気をつけましょう。

Virtualhostの設定をしよう

hostsを設定しましたが、このままではlocal.devにアクセスしても「http://localhost」が表示されてしまいます。
表示したいのは「http://localhost/hoge/」なのでVirtualhostという機能を使います。
Virtualhostはひとつのサーバで複数のサイトを閲覧可能にする機能です。

Virtualhostを使うにはXAMPPをインストールしたディレクトリ「xampp/apache/conf/extra/」の中のhttpd-vhosts.confというファイルを編集します。
「##NameVirtualHost *:80」の頭の##を消し、「NameVirtualHost *:80」にします。これでVirtualhostが有効になりました。

次に一番下に下記を追加します。
※下記はXAMPPをCドライブの直下にインストールしている場合です。別の場所にインストールしている場合は置き換えて記述してください。

<VirtualHost *:80>  
DocumentRoot "C:/xampp/htdocs/"
ServerName localhost
</virtualhost>

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/hoge/"
ServerName local.dev
</VirtualHost>

Apacheの再起動

2つの設定が終わったらXAMPPのコントロールパネルでApacheを再起動(stopをクリックして再度start)を行えば完了です。
うまくいっていれば「http://local.dev」にアクセスすると「xampp/htdocs/hoge/」の中が表示されると思います。

まとめ

複数のフォルダにドメインをあてるときは、上記と同じようにhostsに

127.0.0.1 あてたいドメイン名

httpd-vhosts.confに

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/フォルダ名/"
ServerName あてたいドメイン名
</VirtualHost>

を書き加えればいくつでも増やすことができます。
言うまでもないと思いますが、hostsは自分のPCのみに有効なので他のPCからlocal.devにアクセスしてもXAMPPの中を見ることはできません。

XAMPPを使ってhtmlやphpをブラウザで表示してみよう

今回は、XAMPPを使ってhtmlやphpをブラウザで表示してみます。

XAMPPを起動した状態で「http://localhost」にアクセスすると、XAMPPをインストールしたディレクトリ「xampp/htdocs/」の中が表示されます。

しかし、index.phpの処理で、「http://localhost/xampp/」にリダイレクトされてしまいますので、「xampp/htdocs/」のindex.phpは名前を変えてしまいましょう。(index_backup.phpなど)

その後、「http://localhost」に再度アクセスすると今度はIt works!と表示されていると思います。
これは「xampp/htdocs/」の中のindex.htmlが表示されている状態です。

index.htmlを編集したり、他のhtmlやphpを追加してウェブサイトやシステムをローカルで動かすことができます。

しかし、「xampp/htdocs/」には、最初から複数のフォルダやファイルが存在しますので、そのなかにウェブサイト等のファイルを追加していくのはどうかと思います。

「xampp/htdocs/」の中にフォルダを作って、その中に1つのウェブサイトのデータを入れて「http://localhost/hoge/」にアクセスすることで管理しやすくなると思いますが、「http://localhost/hoge/」では何かと不都合もあります。

例えば、

<a href="/">hoge</a>

というリンクで「http://localhost/hoge/」を表示させることはできません。
「http://localhost」が表示されてしまいます。

hostsというものを使って「xampp/htdocs/hoge/」にドメイン(のようなもの)でアクセス出来るようにする方法について、「XAMPPで複数のサイトを制作しよう」をご覧ください。

PHP 加算子・減算子の使い方

「加算子」「減算子」の使い方です。

加算子と減算子は2種類ずつあります。
違いを見て行きましょう。

前置加算子

++$x

前置加算子は変数の前に+を2つ書き、「変数に1を足した後に変数を返す」形になります。
下記は$xに1を代入した後、$xに1を足して$yに代入します。

<?php
    $x = 1;
    $y = ++$x; // $xに1を足した後に$yに$xを代入します。
    echo $x."\n";
    echo $y;
?>

» 実行結果

後置加算子

$x++

後置加算子は変数の後に+を2つ書き、「変数を返した後に変数に1を足す」形になります。
下記は$xに1を代入し、$yに$xを代入した後に$xに1を足します。

<?php
    $x = 1;
    $y = $x++; // $yに$xを代入した後に$xに1を足します。
    echo $x."<br>\n";
    echo $y;
?>

» 実行結果

前置減算子

--$x

前置減算子は変数の前に-を2つ書き、「変数から1を引いた後に変数を返す」形になります。
下記は$xに3を代入し、$yに$xを代入した後に$xから1を引きます。

<?php
    $x = 3;
    $y = --$x; // $xから1を引いた後に$yに$xを代入します。
    echo $x."<br>\n";
    echo $y;
?>

» 実行結果

後置減算子

$x--

後置減算子は変数の後に-を2つ書き、「変数を返した後に変数から1を引く」形になります。
下記は$xに3を代入し、$xを$yに代入した後に$xから1を引きます。

<?php
    $x = 3;
    $y = $x--; // $xを$yに代入した後に$xから1を引きます。
    echo $x."<br>\n";
    echo $y;
?>

» 実行結果

まとめ

特に加算子はよく使うと思います。
実行結果を見ると分かるように、変数を返す前に1を足す(引く)場合と、変数を返した後に1を足す(引く)場合では、結果が変わる事がありますので、違いをちゃんと理解しておきましょう。

PHP 代数演算子の使い方

「代数演算子」の使い方です。

代数演算子は「足す」「引く」「掛ける」「割る」などを行う演算子です。
一つずつ見て行きましょう。

+

+は足し算ですね。
$x(1)と$y(2)を足して$zに代入してechoで表示します。

<?php
    $x = 1;
    $y = 2;
    
    $z = $x + $y;
    
    echo $z;
?>

» 実行結果

3ですね。

-は引き算ですね。
$x(1)から$y(2)を引いて$zに代入してechoで表示します。

<?php
    $x = 1;
    $y = 2;
    
    $z = $x - $y;
    
    echo $z;
?>

» 実行結果

-1ですね。

また、変数の前に-を付けると、変数の中身がマイナスならプラスに、プラスならマイナスになります。
$x(-10)の前に-を付けてプラスに変え、echoで表示します。

<?php
    $x = -10;
    $y = -$x;
    
    echo $y;
?>

» 実行結果

10ですね。

*

*は掛け算ですね。
$x(6)と$y(2)を掛けて$zに代入してechoで表示します。

<?php
    $x = 6;
    $y = 2;
    
    $z = $x * $y;
    
    echo $z;
?>

» 実行結果

12ですね。

/

/は割り算ですね。
$x(6)を$y(2)で割って$zに代入してechoで表示します。

<?php
    $x = 6;
    $y = 2;
    
    $z = $x / $y;
    
    echo $z;
?>

» 実行結果

3ですね。

%

%は割り算の余りを表示出来ます。
$x(7)を$y(4)で割った余りを$zに代入してechoで表示します。

<?php
    $x = 7;
    $y = 4;
    
    $z = $x % $y;
    
    echo $z;
?>

» 実行結果

3ですね。

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 == "こんにちは");
?>

» 実行結果