RM-BLOG

IT系技術職のおっさんがIT技術とかライブとか日常とか雑多に語るブログです。* 本ブログに書かれている内容は個人の意見・感想であり、特定の組織に属するものではありません。/All opinions are my own.*

【PHP】PHP基礎知識まとめ

PHPの基礎知識まとめ


 

 


【もくじ】

■PHPプログラムについて
■変数定義について
■文字列結合について
■四則演算について
■for文について
■if文について
■配列について
■リクエストパラメータについて
■実行環境について




 ■PHPプログラムについて

phpのプログラムコードは<?php~?>の間に記述する。
1行で書いてもいいし複数行に渡って書いてもいい。
(複数行にわたって書く場合は文末に「;」セミコロン)を付ける)
ちなみにコメント行は「//」である。

1行で書く場合

<?php echo 'Hello PHP'; ?>


実行後↓

Hello PHP


複数行で書く場合

<?php
echo 'Hello<br/>';
echo 'PHP';
?>


実行後↓

Hello
PHP

※最初の「echo 'Hello<br/>'」で「Hello」の後ろに改行を付けたので、
HTMLベースで表示させると改行される。




 ■変数定義について

変数定義は変数名の先頭に「$」(半角ドルマーク)を付ける。

<?php
$var = 'Hello PHP';
echo $var;
?>


実行後↓

Hello PHP


PHPブロックが分離されていても変数定義は有効になる。

<?php
$var = 'Hello PHP';
?>
あいうえお<br/>
かきくけこ<br/>
さしすせそ<br/>
<?php
echo $var;     ←ここは変数「var」を読み取ってくれる
?>


実行後↓

あいうえお
かきくけこ
さしすせそ
Hello PHP


ちなみにこの順序が逆だと(変数定義より前に変数を使おうとすると)エラーになる。

<?php
    echo $var2;   ←ここで実行エラー
    $var2 = 'Hello PHP';  ←変数定義はここ
?>


こんな↓エラーが発生する。

Notice: Undefined variable: var2 in C:\xampp\htdocs\test_for_neta.php on line 20

※末尾の「line 20」は「20行目でエラーになった」という意味




 ■文字列結合について

結合する文字と文字の間に「.」(半角ドット)を付与する。

<?php
    $var = 'Hello';
    $var2 = 'PHP';
    $var3 = $var.' '.$var2;
    echo $var3;
?>


↑の例は、

  • 「Hello」という文字列が格納された変数var
  • PHP」という文字列が格納された変数var2
  • 変数varと半角スペースと変数var2をこの順番で結合した文字列を変数var3に代入

という流れで文字を結合し、最終的に「Hello PHP」という文字を作り出す。

実行後↓

Hello PHP

 




 ■四則演算について

「+」で加算、 「-」で減算、 「*」で乗算、 「/」で除算。

<?php
    $cnt1 = 1;
    $cnt2 = 2;
    $cnta = $cnt1 + $cnt2;  ←加算
    $cntb = $cnt1 - $cnt2;  ←減算
    $cntc = $cnt1 * $cnt2;  ←乗算
    $cntd = $cnt1 / $cnt2;  ←除算
    echo $cnt1.'+'.$cnt2.'='.$cnta.'<br/>';
    echo $cnt1.'-'.$cnt2.'='.$cntb.'<br/>';
    echo $cnt1.'*'.$cnt2.'='.$cntc.'<br/>';
    echo $cnt1.'/'.$cnt2.'='.$cntd.'<br/>';
?>


実行後↓

1+2=3
1-2=-1
1*2=2
1/2=0.5


ちなみに変数の中身が数値じゃない(文字)の場合、
計算させようとするとワーニングになる。

<?php
    $cntx = 'x';
    $cnty = 'y';
    $cntz = $cntx + $cnty;   ←ここで実行時警告
    echo $cntx.'+'.$cnty.'='.$cntz;
?>


こんな↓ワーニングが発生する。

Warning: A non-numeric value encountered in C:\xampp\htdocs\test_for_neta.php on line 47
x+y=0


ただ「ワーニング」という背景もあるのか計算結果を「0」にして先には進むらしい。




 ■for文について

以下のように記述できる。

<?php
for ($i = 0; $i < 10; $i++) {
    echo 'Number='.$i;
}
?>


変数「$i」は事前に定義する必要はない(forの最初で定義したことになっている)。
JavaC言語のfor文とほとんど同じなので馴染み易いだろう。

実行例↓

Number=0
Number=1
Number=2
Number=3
Number=4
Number=5
Number=6
Number=7
Number=8
Number=9

 




 ■if文について

以下のように記述できる。

<?php

    $iftest = 4;
    if ($iftest < 0) {
        echo $iftest.' is less than 0';
    } else if ($iftest >= 0 && $iftest <= 5) {
        echo $iftest.' is between 0 and 5';
    } else {
        echo $iftest.' is over 5';
    }

?>


if~、else if~、else~で記述する。
これもJavaC言語のそれに近く、馴染み易い。
実行例↓

4 is between 0 and 5

 




 ■配列について

「array」という関数でとりあえず簡易的な配列が作れる。
また、「count」という関数で配列の要素数を取得できる(=java.util.List#size()と同じ意味合い)
素数は0~からスタートする。(が、後述の連想配列のことを考えるとこれに特に意味はない)

まず一次元配列でいうと

$arr = array('hoge','huga','hega');
for ($i = 0; $i < count($arr); $i++) {
    echo 'array['.$i.']='.$arr[$i].'
'; }


0番目に「hoge」、1番めに「huga」、2番目に「hega」という文字列を格納した単純一次元配列について、
素数を取得(count関数による)して0番目から全要素走査して中身の値を表示する。

実行例↓

array[0]=hoge
array[1]=huga
array[2]=hega


ちなみに表示の体裁に特にこだわらないなら、
「var_dump」という関数を使うともっと手軽に中身を表示させることができる。

$arr = array('hoge','huga','hega');
var_dump($arr);


実行例↓

array(3) { [0]=> string(4) "hoge" [1]=> string(4) "huga" [2]=> string(4) "hega" }



「array」はJavaでいうところのjava.util.Mapも兼ねており、いわゆる連想配列みたいなのも実現できる。

$arr2 = array(
    'hoge' => 'hogehoge'
   ,'huge' => 'hugehuge'
   ,'rm' => 'blank slash'
);
while ($key_name = key($arr2)) {
    echo $key_name."=".$arr2[$key_name]."<br/>";
    next($arr2);
}


「key」という関数で、
配列の現在のKEY値を取得できる(↑の例でいうところの「hoge」とか「huga」とか「rm」とか)
「next」という関数で、配列の現在位置を一つ進めることができる

実行例↓

hoge=hogehoge
huge=hugehuge
rm=blank slash

 




 ■リクエストパラメータについて

GETやPOSTでリクエストされるケースで、リクエストパラメータを取得する方法。
GETなら$_GET[パラメータ名]、POSTなら$_POST[パラメータ名]で、
それぞれリクエストパラメータを取得できる。
これはこういう特殊な配列変数名が予約済の位置づけで使われており、
GETやPOSTでのリクエストの際に必ず利用される。

$g_value = $_GET['g_param'];
$p_value = $_POST['p_param'];

echo 'GET PARAMETER='.$g_value.'<br/>';
echo 'POST PARAMETER='.$p_value.'<br/>';


例えば↑のコードを書いたphpを「test.php」として保存した場合、
WEBサーバ内の適切な位置に配置したうえで「test.php?g_param=test」で呼び出すと、
$_GET['g_param']で「test」という値が取れる。




 ■実行環境について

いろいろあるらしいけど俺はXAMPPを使っている。
大体みんなこれなのかな?
ダウンロード・インストールのうえ、「XAMPP Control Panel」を起動し、
(とりあえず最低限)「Apache」を起動しておけばPHPの実行環境としてはもうできあがり。
手軽で良い。

20180410_neta_XAMPP_ScreenShot.jpg

ちょっと環境の都合でhttpのデフォルトのポートを暫定的に8888として起動しているが、
まあとりあえず↑の画像状態と同じでApacheが起動完了したのち、
ブラウザ立ち上げてアドレスバーに「http://localhost:8888/」を入力すればよい。
ちなみにポートが8090とかなら「http://localhost:8090/」になる。
多分以下のようなページが開かれると思われる。

20180410_neta_localhost8888_pv.jpg

↑のURLをたたくと、実際には「http://localhost:8888/index.php」が呼び出される。
中身開いてみればわかるが、その後「/dashboard」配下にリダイレクトさせるように書いてあるので、
http://localhost:8888/」をアドレスバーに入力しても
遷移先は「「http://localhost:8888/dashboard」になっている。
「index.php」はXAMPPのインストールディレクトリ配下の「htdocs」ディレクトリ配下にある。
というより、XAMPPインストール直後のデフォルトのドキュメントルートがこの「htdocs」になっている。
なので、このindex.phpと同階層に、test.phpとか作って、実験していく形になる。
なお、ドキュメントルートはただの設定なので好きな場所に変更できる。
XAMPP Control PanelのApacheの行の「Config」というボタンをクリックし、
Apache(httpd.conf)」を選択する。(↓の画像)

20180410_neta_XAMPP_Config_ScreenShot.jpg
デフォルトだとここでメモ帳が開くので、
開いた後「DocumentRoot」という文字列で検索する。
2回目くらいにヒットした行に、
ドキュメントルートの設定フォルダが載っている。(↓の画像)

20180410_neta_XAMPP_httpdconf_ScreenShot.jpg
この↑例だと「C:/xampp/htdocs」がドキュメントルート。