クロピグログ

職業訓練で学んだことまとめ

【PHP授業二日目】変数、配列

f:id:chromiumpig:20200901161459p:plain

●ヒアドキュメント

OK

$text1 = <<< EOT
ヒアドキュメントの文字列
ヒアドキュメントの文字列
ヒアドキュメントの文字列
EOT;

OK

$text1 = <<< EOT
  ヒアドキュメントの文字列
  ヒアドキュメントの文字列
  ヒアドキュメントの文字列
  EOT;

NG

$text1 = <<< EOT
  ヒアドキュメントの文字列
ヒアドキュメントの文字列
  ヒアドキュメントの文字列
  EOT;

・終端IDのインデントより前に文字列があるとエラー

 

◇復習1

「〇月〇日です」を変数に代入して表示

<?php
$today = date("n月j日です");
?>
<body>
 <p><?php echo $today?></p>
</body>

 

◇復習2

「来月〇月です」を変数に代入して表示

<?php
$nextMonth = date("n") + 1;
$text = date("来月{$nextMonth}月です");
?>
<body>
  <p><?php echo $text?></p>
</body>

 

●var_dump関数

・開発時、確認用に出力する関数

・データ型も含めた値を出力

  <?php
  $val = 'おいしい水';
  echo '<p>';
  var_dump($val);
 
  echo '<br>';
  echo $val;
  echo '</p>';
  ?>

・string(15)"おいしい水"

・()の中はバイト数

・UTF8は全角文字1文字3バイト(一部2バイトもある)

 

  <?php
  $val = 100;
  echo '<p>';
  var_dump($val);
 
  echo '<br>';
  echo $val;
  echo '</p>';
  ?>

・int(100)

・()内は数値

・echoは出力対象を文字列型に変換して処理

 

  <?php
  $val = true;
  echo '<p>';
  var_dump($val);
  echo '<br>';
  echo $val;
 
  echo '</p>';
  ?>

・真偽値をechoで出力すると「true」が文字列型「'1'」に変換され出力

・「false」が文字列型「''」に変換され出力

・変数内の値を正確に確認するときはvar_dump関数で確認すること!

 

●文字列連結演算子

  <?
  $name='田中';
  echo 'こんにちは' . $name . 'さん'; ←「こんにちは田中さん」出力
  echo $name . 200; ←「田中200」出力
  ?>

・JSは「+」で連結

PHPは「.」で連結

・型の違う値を文字列連結する場合はデータ型を文字列型に揃えてから連結

・「.」の前後に半角スペースを入れないと「.」の前後が数値の場合に小数点として扱われてエラーになる

・上の対応策として、拡張機能の「PHP Intelephense」を入れると整理される

拡張機能の「php cs fixer」と一緒に入れるとうまく挙動しなくなるので注意!

 

PHPの使い道

・テンプレートとして利用

・商品紹介のページなどで画像や名前のみ切り替える時に使用する

 

配列

●書き方はJSと一緒

  <?php
  $fruits = ['いちご''みかん''りんご'];
  ?>

・JSで利用できたlengthプロパティがない

 

●別パターン1 少し前までの書き方

 <?php
  $shikoku = array('高知県''香川県''愛媛県''徳島県');
 ?>

・少し前の本やサンプルは配列の書き方「array()」がこの説明なので、一応覚えておく

 

●別パターン2

  <?php
 $northKanto[ ] = '茨城県';
  $northKanto[ ] = '栃木県';
  $northKanto[ ] = '群馬県';
 ?>

 ・変数名の後にをつけて配列を作成

・部屋番号は一番小さな部屋番号を自動的に割り振っていく

・1部屋ずつ追加していく際に使用

・繰り返し処理と合わせて使用することが多い

 

$hundred = [100100.0'100''百'];

 ・JSやPHPは配列内に異なるデータ型の値を持つことができる

Javaなどは異なるデータ型はNG

 

  echo count($fruits);

・配列の部屋数を取得する場合はcount関数を使用するJSのlengthプロパティと同じ役割

count関数

第1引数:調べる配列

戻り値:配列の部屋数

JSのlengthプロパティと同じ役割

 

●問題1
for文で配列内の値を取得
果物の名前の後に「さん」をつけて表示

  for ($i = 0$i < count($fruits); $i++) {
    echo $fruits[$i. 'さん<br>';
  }

 

●配列内の文字変えたいとき

  $fruits[1] = 'メロン';

 

●配列に追加したいとき

  $fruits = 'スイカ';

 

●HTMLタブを出力

<img src=" $src変数 " alt=" $alt変数 ">

   ↓ 連結させるために

'<img src=".  $src変数   .   '" alt="'    $alt変数   '. ">'

※JSだと ' <img src=" ' + src変数 + " alt=" + alt変数 + ">

  $src = 'img/b002.jpg'//src属性用変換
  $alt = 'ねこにゃん'//alt属性用変数
  echo '<p>';
  echo '<img src="' . $src . '" alt="' . $alt . '">';
  echo '</p>';

 

 ●問題2

配列内の情報をすべて使うこと($srcListと$altList)

for文を使って4枚の画像を表示すること

$srcList = [
  'img/b001.jpg',
  'img/b002.jpg',
  'img/b003.jpg',
  'img/b004.jpg'
];
$altList = [
  'DPH',
  'ねこにゃん',
  'もんちゃん',
  '部屋'
];
for ($i = 0$i < count($srcList); $i++) {
  echo '<p><img src="' . $srcList[$i. '" alt="' . $altList[$i. '"></p>';
}

 

 ●乱数を扱う関数

公式マニュアル「php.net」の見方

 https://www.php.net/manual/ja/function.mt-rand.php

・mt_rand(void):int

・voidは空・虚の意味

・引数部分「void」の場合は引数なしで呼び出し

・戻り値部分「void」の場合は戻り値なし

・mt_rand ( int $min , int $max ) : int

・mt_rand ( データ型 説明用の名前 , データ型 説明用の名前 ) : 戻り値の型

・引数の説明は「パラメータ」に記載

※ここで説明用の名前を使って解説

 

  $rand2 = mt_rand(515); 5~15のランダム表示(5と15含まれる)

 

●問題3

1~3の乱数を生成すること

乱数を3つの変数に代入して数字が揃ったら「あたり」とする

各乱数をブラウザに表示してスロットを作成すること

  $randomNam1 = mt_rand(13);
  $randomNam2 = mt_rand(13);
  $randomNam3 = mt_rand(13);
  echo $randomNam1 . $randomNam2 . $randomNam3 .  '<br>';
  if ($randomNam1 == $randomNam2 && $randomNam2 == $randomNam3) {
    echo 'あたり';
  }

 

●HTMLのこれ覚えとくと表示するとき楽

<img src="" alt="">

1.多次元配列を教科書を参考に作成
2.繰返し処理を使って4枚の画像を表示

 
  $imgList =[
    ['img/b001.jpg','DPH'],
    ['img/b002.jpg','ねこにゃん'],
    ['img/b003.jpg','もんちゃん'],
    ['img/b004.jpg','部屋'],
  ];
  for ($i=0$i < count($imgList); $i++) {
    echo '<p><img src="' . $imgList[$i][0. '" alt="' . $imgList[$i][1. '"></p>';
  }