はじめに
PHPの基本をこの記事で書いていきます。
PHPの初学者の方向けの記事です。実際にコードを書いたりして
実際の挙動などを確認してみてください。
環境
MAMPをインストールします。
エディタはVScodeです。
環境構築方法
MAMPの環境構築が動画でわかりやすく載っていました。
PHPで出力する時はMAMPで出力するのでこちらを確認してください。
バージョン
以下のバージョンで挙動を確認しました。
配列とは
簡単にいうとデータのかたまりのことです。
つまりデータをたくさん詰められるタンスのような役割をしています。
そして、データ1つ1つは箱のようなもので、要素
と呼んでいます。
例えば、それぞれ名前(文字列)を格納するようなイメージになります。
箱1つ1つには番号が振られていて、この番号を添字と呼んでいます。添字は0から始まります。
変数と配列を比較する
変数と配列を比較していきましょう。
まず変数からです。変数名を動物にしていきます。
<?php
//変数
$animal_1 = "犬";
$animal_2 = "猫";
$animal_3 = "猿";
echo $animal_1. "<br>". $animal_2. "<br>". $animal_3; //brは改行
//犬
//猫
//猿
ただこの変数の数が10000個とかになると時間がかかってしまいますよね。
そこで配列が登場します。配列を見ていきましょう。
<?php
//配列
$animal[0] = "犬";
$animal[1] = "猫";
$animal[2] = "猿";
echo $animal[0]. "<br>". $animal[1]. "<br>". $animal[2];
//犬
//猫
//猿
配列では***[添字]***を入れていきます。
配列の格納
配列を実際に格納のやり方を見ていきます。
$animal = ["犬","猫","猿"];
echo $animal;
//犬
//猫
//猿
$animal = ["犬", "猫", "猿"];
echo $animal[0] . "<br>";
//犬
数字でも表せます。
$array = [10,20,30]; //arrayは配列
echo $array[0];
echo $array[1];
//10
//20
プログラムは0から始まります。
var_dumpで配列を中身を見てみます。
$array = [10,20,30];
var_dump($array);
// array(3) { [0]=> int(10) [1]=> int(20) [2]=> int(30) }
出力を見やすくするのに<pre>
を使います。
<?php
$array = [10,20,30];
echo "<pre>";
var_dump($array);
echo "<pre>";
//array(3) {
// [0]=>
// int(10)
// [1]=>
// int(20)
// [2]=>
// int(30)
//}
デバック関数print_r
デバック用にPHPが用意している関数で、print_rと言います。
配列の中身を確認したりするときに使います。
$score[0] = 100;
echo $score[0]. "<br>";
echo print_r($score). "<br>";
//100
//Array ( [0] => 100 ) 1
var_dumpも入れてみると
$score[0] = 100;
echo $score[0]. "<br>";
echo print_r($score). "<br>";
echo var_dump($score);
//100
//Array ( [0] => 100 ) 1
//array(1) { [0]=> int(100) }
var_dumpはprunt_rよりも詳しく確認したい場合に使います。
ハッシュ(連想配列)
ハッシュ
とはkeyやvalueを入れて配列よりもわかりやすく表したものです。
さらにハッシュでは$data以外にもいろいろなグループに分けたりすることができます。
ex) $school,$Playerなど
配列の初期化
配列の初期化のやり方は下記のコードになります。
<?php
//配列の初期化
$array = array();
$array = [];
echo print_r($array);
//Array ( ) 1
値を入れた初期化の方法です。
<?php
$animal = ["ライオン","チーター","トラ"];
echo print_r($animal);
//Array ( [0] => ライオン [1] => チーター [2] => トラ ) 1
ハッシュの書き方
まずは簡単な書き方からです。
$score[0] = 100;
$score[3] = 70;
echo $score[0] . "<br>";
echo $score[3] . "<br>";
//100
//70
$score[0] = 100;
$score[3] = 70;
echo print_r($score) . "<br>";
//Array ( [0] => 100 [3] => 70 ) 1
//"<br>"は改行
$score["japanese"] = 100;
$score["english"] = 70;
echo print_r($score) . "<br>";
//Array ( [japanese] => 100 [english] => 70 ) 1
$intKey = 50;
$age[$intKey] = 100;
echo print_r($age) . "<br>";
//Array ( [50] => 100 ) 1
$score["japanese"] = 100;
$score["english"] = 70;
echo print_r($score) . "<br>";
$intKey = 50;
$age[$intKey] = 100;
echo print_r($age) . "<br>";
$strKey = "math";
$score[$strKey] = 80;
echo print_r($score) . "<br>";
//自動割り当て
$fruits[] = "apple";
$fruits[] = "orange";
echo print_r($fruits) . "<br>";
//Array ( [0] => apple [1] => orange ) 1
$height[0] = 160;
$height[1] = 170;
$height[2] = 180;
echo $height[0] . "<br>";
$height[] = 190;
echo print_r($height) . "<br>";
//160
//Array ( [0] => 160 [1] => 170 [2] => 180 [3] => 190 ) 1
ここではサッカー選手を変数にしていきます。
<?php
$soccer_player = ["name" => "メッシ","nation" => "アルゼンチン","height" => 169];
echo $soccer_player["name"];
//メッシ
連想配列ではechoの後にkeyの部分を入れたりします。
var_dumpなどで中身を見ていきます。
<?php
$soccer_player = ["name" => "メッシ","nation" => "アルゼンチン","height" => 169];
echo $soccer_player["name"];
echo "<pre>";
var_dump($soccer_player);
echo "</pre>";
//メッシ
//array(3) {
// ["name"]=>
// string(9) "メッシ"
// ["nation"]=>
// string(18) "アルゼンチン"
// ["height"]=>
// int(169)
//}
キーと値の初期化
次にキーと値を入れて初期化していきます。
<?php
$soccer_player = [
"メッシ" => "Messi",
"ロナウド" => "Ronald",
"ネイマール" => "Neymar",
];
echo print_r($soccer_player) . "<br>";
//Array ( [メッシ] => Messi [ロナウド] => Ronald [ネイマール] => Neymar ) 1
ロナウドを出力したい場合は
<?php
$soccer_player = [
"メッシ" => "Messi",
"ロナウド" => "Ronald",
"ネイマール" => "Neymar",
];
print_r($soccer_player ). "<br>";
echo $soccer_player["ロナウド"]. "<br>";
//Array ( [メッシ] => Messi [ロナウド] => Ronald [ネイマール] => Neymar )
//Ronald
多次元配列
配列の中に配列があるものを多次元配列
と言います。
<?php
$pokemon_1 = [
"ピカチュウ","ミュウ","ミュウツー"
];
$pokemon_2 = [
"リザードン","カメックス","フシギバナ"
];
//この2つの配列を組み合わせて多次元配列
$my_pokemon = [
$pokemon_1, $pokemon_2
];
?>
<pre><?php echo print_r($my_pokemon). "<br>"; ?></pre>
で実行すると
Array
(
[0] => Array
(
[0] => ピカチュウ
[1] => ミュウ
[2] => ミュウツー
)
[1] => Array
(
[0] => リザードン
[1] => カメックス
[2] => フシギバナ
)
)
1
さらに下のコードを入れると以下のように出ます。
<?php echo $my_pokemon[0][2]. "<br>";
echo $my_pokemon[1][0]. "<br>";
//ミュウツー
//リザードン
今回は2つしか配列はないですが、配列の数が増えるとどんどん階層が深くなっていきます。
多次元配列を出力
多次元配列を下の例題に沿って書いていきます。
下のポケモンの名前、レベル、タイプの値が入った2次元配列を作り、
連想配列を1つ作って、その配列の中身を全て出力する
①名前 : ピカチュウ レベル : 70 タイプ : "電気"
②名前 : リザードン レベル : 90 タイプ : "炎"
③名前 : ミュウツー レベル : 100 タイプ : "エスパー"
$pokemon = [
["name" => "ピカチュウ", "level" => 70, "type" => "電気"],
["name" => "リザードン", "level" => 90, "type" => "炎"],
["name" => "ミュウツー", "level" => 100, "type" => "エスパー" ],
];
$Pikachu = ["name" => "ピカチュウ", "level" => 70, "type" => "電気"];
$Charizard = ["name" => "リザードン", "level" => 90, "type" => "炎"];
$Mewtwo = ["name" => "ミュウツー", "level" => 100, "type" => "エスパー"];
//$pokemon = [$Pikachu,$Charizard,$Mewtwo];
?>
<pre><?php echo print_r($pokemon). "<br>";?> </pre>
出力すると
Array
(
[0] => Array
(
[name] => ピカチュウ
[level] => 70
[type] => 電気
)
[1] => Array
(
[name] => リザードン
[level] => 90
[type] => 炎
)
[2] => Array
(
[name] => ミュウツー
[level] => 100
[type] => エスパー
)
)
1
ちなみにvar_dumpを使うと
<pre><?php var_dump($pokemon). "<br>";?> </pre>
array(3) {
[0]=>
array(3) {
["name"]=>
string(15) "ピカチュウ"
["level"]=>
int(70)
["type"]=>
string(6) "電気"
}
[1]=>
array(3) {
["name"]=>
string(15) "リザードン"
["level"]=>
int(90)
["type"]=>
string(3) "炎"
}
[2]=>
array(3) {
["name"]=>
string(15) "ミュウツー"
["level"]=>
int(100)
["type"]=>
string(12) "エスパー"
}
}
PHPの基礎がわからない方向けの記事
全くわからない方は下の記事を読んでみてください。
参考資料