PHP whileの使い方

「while」の使い方です。

whileはループ処理を行う構文の一つで、()がtrueである限り{}の処理を繰り返します。
例えば、1から10までの数字を表示したい場合に下記のように何度も書くのは面倒です。

<?php
    echo "1<br>\n";
    echo "2<br>\n";
    echo "3<br>\n";
    ・
    ・
    ・
    echo "10<br>\n";
?>

上記をwhileを使用して書くと下記のようになります。

<?php
    $i = 1;
    while($i <= 10){
        echo $i."<br>\n";
        $i++;
    }
?>

» 実行結果

変数iに1を代入し、whileの()内に、変数iが10以下ならば{}内の処理を繰り返し行うという条件を記述します。
{}内の一回目の処理は、echoで変数i(1)を表示し、変数iに1を足します。2回目もechoで変数i(2)を表示し、変数iに1を足す・・・という事を変数iが10になるまで繰り返します。

注意事項

気をつけなければならないことは、$i++を忘れてしまうと、永遠に処理を繰り返す「無限ループ」になってしまうことです。
無限ループになると、サーバーに大きな負担がかかり、止まってしまうこともありますので十分注意しましょう。

PHP switchの使い方

「switch」の使い方です。

switchは()の中身によって実行する処理を変えることができる関数です。
下記のように1つの変数をif..elseifで何度も判定する場合、switchを使用した方が可読性が高いと思います。

<?php
    $x = 20;

    if($x == 10){
        echo "変数xの中身は10です";
    }else($x == 20){
        echo "変数xの中身は20です";
    }elseif($x == 30){
        echo "変数xの中身は30です";
    }else{
        echo "変数xの中身は10~30ではありません。";
    }
?>

上記をswitchで書くと下記になります。

<?php
    $x = 20;

    switch($x){
        case 10:
            echo "変数xの中身は10です。";
            break;
        
        case 20:
            echo "変数xの中身は20です。";
            break;
        
        case 30:
            echo "変数xの中身は30です。";
            break;
        
        default:
            echo "変数xの中身は10~30ではありません。";
            break;
    }
?>

» 実行結果

「case 値:」の値が()の中身と等しければその後に書かれている処理を行い、違う場合は次の「case 値:」の値と比較する・・・ということを繰り返します。もちろん、処理は複数行書いても大丈夫です。

等しいものがない場合は「default:」の後に書かれている処理を行います。

慣れないと「break;」を書き忘れてしまいがちですが、その場合、等しい値があり処理が実行されたにもかかわらず、次の「case 値:」との比較を繰り返しますので、意図しない結果になることもあります。気をつけましょう。
(あえてbreakを書かないという使用方法もあります)

switchを使用する上でのもう一つの注意点は()の中身と「case 値:」の値との比較が「==」で行われるということです。
データ型まで厳密に比較する必要がある場合は、switchの使用を避けた方がいいでしょう。

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ですね。