Friction River Software

  • お問い合わせ

CakePHP5入門【PHP言語の文法編①】変数と配列

B美

今回からようやくPHP言語の勉強です
まずは準備ね

デスクトップ上にある「bimiのホーム」をダブルクリックして開きます
「bimi」の部分はそれぞれ自分のユーザ名に置き換えてね

B美

html」をダブルクリックすると、中身(のファイル)が見えます

A子

前々回Webサーバ設定のときに作った「index.html」と、前回作った「info.php」があるね

B美

「index.html」の上で右クリックして、「開く」から「L3afpad」を選んでね(「Pluma」でもOK)
そしたら、「テスト」の文言を削除して替わりに下記を入力してね

<?php
$a = 2;
$b = 3;

$c = $a + $b;

echo $a."足す".$b."は".$c;
?>

C菜

意味は分からないですけど、できました~

B美

test1.php」という別名で保存して、「Firefox ESR」のURL欄に「localhost/test1.php」を入力して確認してみてちょうだい

A子

あ、なんとなく分かっちゃった…

C菜

私も分かりました~

これって「a」や「b」や「c」が数値データの入れ物ってことじゃないですか~?

B美

正確には「$a」「$b」「$c」ね

プログラムではデータの入れ物のことを「変数」と呼ぶんだけど、PHP言語における変数は必ず「$ドル」で始まると決まってるのよ

C菜

=イコール」は等しいって意味ですか~?

B美

いいえ、違うわ
「等しい」は「==イコールイコール」で表現するの

一文字の「=イコール」は代入演算子

A子

だいにゅう…って何?

B美

=イコール」の左側を「左辺さへん」、右側を「右辺うへん」と呼ぶとして…
「右辺」の値を「左辺」の変数へ入れることを「代入だいにゅう」と言うのよ

あ、「右辺」が変数だったり、式だったりするかもしれないけど、評価後は必ず値になる
(値でなければ変数には入れられないからね)

C菜

echoエコー」は多分画面への表示のことだと思うんですけど、echoの右側がなんかややこしいです~

A子

画面表示は「printプリント」じゃないの?

B美

二人とも正解!
画面表示は「echoエコー」でも「printプリント」でもどっちでも良いわよ(違いはあるんだけど…)

なお、「"ダブルクォート」で挟んだものは「文字列」、文字列同士や変数の値を連結するのが「.ドット」よ
それを前提に考えてみれば分かるんじゃない?

echo $a."足す".$b."は".$c;

「$a」が「2」、「$b」が「3」、「$c」が「5」に置き換わるとして、それらを連結すると…?

C菜

「2足す3は5」になるです~

A子

なるほどねぇ

たしかにそれほど難しくはないかな

B美

「変数」や「代入」が理解できたところで、次は「配列」よ

PHPには通常の「配列」と「連想配列」の二種類があるの
さっきの「test1.php」の「<?php」と「?>」の間に次のコードを入力してから、「test2.php」というファイル名で保存してね

<?php
$array = [1, 2, 3, 4, 5];
$hash = ['first' => 'A子', 'second' => 'B美', 'third' => 'C菜'];

print_r($array);
echo "<br /><br />";
print_r($hash);
?>

Firefox ESR」のURL欄に「localhost/test2.php」を入力して確認すると…



A子

ん?これって…

$arrayの[0]番目には「1」が入っていて、[4]番目には「5」が入ってるってこと?

C菜

その法則にしたがえば~

$hashの[first]番目には「A子」、[second]番目には「B美」という文字が入ってるってことでしょうか~?

B美

A子は正解、C菜はちょっと惜しい!
print_r関数で連想配列の内容を表示するときって、キーワードを囲む「'シングルクォート」が表示されないの

だから正確には、$hashの['third']番目に「C菜」という文字列が入ってるって表現すべきね

検証のためにさっきの「test2.php」に追記してみましょう

<?php
$array = [1, 2, 3, 4, 5];
$hash = ['first' => 'A子', 'second' => 'B美', 'third' => 'C菜'];

print_r($array);
echo "<br /><br />";
print_r($hash);

echo "<br /><br />";
echo '配列「$array」の[2]番目の値は'.$array[2];
echo "<br /><br />";
echo '連想配列「$hash」の'."['third']番目の値は".$hash['third'];

?>

上書き保存したらブラウザで確認してみてね



A子

"ダブルクォート」と「'シングルクォート」が混在してるのって、なんでよ?

B美

良い質問ね

"ダブルクォート」で挟まれた文字列中に「$ドル」で始まる変数・配列・連想配列があると、その値を文字列の中に埋め込もうとするのよ
'シングルクォート」の場合は、それ(変数展開)が無いってわけ

echo '連想配列「$hash」の'."['third']番目の値は".$hash['third'];

において、最初の「'連想配列「$hash」の'」では$hashが展開されないように「'シングルクォート」で挟んでいるのよ
んで、二番目の「"['third']番目の値は"」の部分が「"ダブルクォート」なのは、['third']のところで「'シングルクォート」を使っちゃってるからね

C菜

…ってことは~

echo '連想配列「$hash」の'."['third']番目の値は$hash['third']";

でも良いんですか~?

B美

惜しい!
その場合は

echo '連想配列「$hash」の'."['third']番目の値は{$hash['third']}";

というふうに波カッコ「{}」で囲む

echo '連想配列「$hash」の'."['third']番目の値は$hash[third]";

って感じで、キーワードに「'シングルクォート」を付けないのよ

A子

分かりづらっ!

てか、ややこしい!

B美

だから変数展開については、あまり使わないほうが良いかもね

文字列や値を連結したい場合は「.ドット」でつなげるほうが良いと思う
(まぁ、好き好きだけど…)

あと、普通の変数を「"ダブルクォート」内に入れる場合も注意が必要なのよね
変数名の後ろにスペース(空白文字)を入れるか、波カッコ「{}」で囲むかをしないといけないわ

C菜

変数展開をできるだけ使わないようにするです~

A子

うん、完全に同意ね

面倒くさ過ぎる!

B美

とにかく「配列」や「連想配列」ってのがどういうものなのか、分かってもらえたかしら?

まとめると…
複数の値をひとまとめにして取り扱う手段で、「配列」はキーワードが数字(「添字そえじ」とか「indexインデックス」なんて言います)で、「連想配列」はキーワードが文字列ってだけの話ね

あ、「配列」の「添字そえじ」は必ず「0ゼロ」から始まる点に注意してね

C菜

理解したです~

A子

私もなんとなくは分かった

ひとまとめにする理由が今一つ分からないけど(苦笑)

B美

それは先々「繰返し」の処理を学んだら分かってくる(かもしれない)わ

では今回はここまで
次回は「選択」処理を学んでいきましょう