不惑にしてまだ何者でもない者のブログ

Arduino関連、Raspberry Pi関連、プログラミング学習

paizaラーニング『PHP入門編6:多次元配列を理解しよう (全12回) 』を受講してみた

2020-11-04 22:23:20 | paiza
なんだが、勉強のメモをブログに整理するのが面倒になってきたな。
まぁとりあえず、惰性で続けてみるかぁ〜( ´Д`)=3


PHP入門編6:多次元配列を理解しよう (全12回)
01:多次元配列の概要
  • 2次元配列とは
    • 2次元配列とは、2つのインデックスで要素を指定する配列のこと。
      $arr[3][4] = 100;

02:2次元配列を作成する
  • 配列の作成方法
$teamA = ["勇者", "戦士", "魔法使い"];
$teamB = array("遊び人", "格闘家", "僧侶");
  • 2次元配列を作成する
$teamC = ["勇者", "戦士", "魔法使い"];
$teamD = ["盗賊", "忍者", "商人"];
$teamE = ["スライム", "ドラゴン", "魔王"];
$teams = [$teamC, $teamD, $teamE];
echo($teams[0][0] . ", ");
echo($teams[0][1] . ", ");
echo($teams[0][2] . "\n");

03:2次元配列を操作する1
  • 2次元配列を直接定義する
<?php
// 2次元配列の基本操作
$teams =
 [
  ["勇者", "戦士", "魔法使い"],
  ["盗賊", "忍者", "商人"],
  ["スライム", "ドラゴン", "魔王"],
 ];
?>

04:2次元配列を操作する2 
  • 要素を追加する
<?php
$teams =
 [
  ["勇者", "戦士"],
  ["盗賊", "忍者", "商人"],
  ["スライム", "ドラゴン", "魔王"],
  ["魔法使い"],
 ];
print_r($teams);

$teams[] = ["メタルモンスター", "シルバーモンスター", "ブラックモンスター"];
print_r($teams);

$teams[0][] = "レッドドラゴン";
print_r($teams);
?>
  • 要素を削除する
unset($teams[1]);
print_r($teams);

unset($teams[0][1]);
print_r($teams);

05:2次元配列をループで処理する
  • forで配列のインデックスを出力する
<?php
$teams =
 [
  ["勇者 ドット絵のデータ 7", "戦士", "魔法使い"],
  ["盗賊", "忍者", "商人"],
  ["スライム", "ドラゴン", "魔王"],
 ];
for ($i = 0; $i < count($teams); $i++) {
 for($j = 0; $j < count($teams[$i]); $j++) {
  echo $i;
  echo $j;
  echo " ";
 }
 echo "\n";
 echo "---\n";
}
?>
  • forで配列を出力する
for ($i = 0; $i < count($teams); $i++) {
 for($j = 0; $j < count($teams[$i]); $j++) {
  echo $teams[$i][$j] . " ";
 }
 echo "\n";
 echo "---\n";
}
  • foreachで配列を表示
foreach ($teams as $team) {
 foreach ($team as $player) {
  echo $player . " ";
 }
 echo "\n";
 echo "---\n";
}

06:2次元配列をarrayで作成する
  • 2次元配列をarrayで作成する
<?php
$teams = array(
 array("勇者", "戦士", "魔法使い"),
 array("盗賊", "忍者", "商人"),
 array("スライム", "ドラゴン", "魔王"),
);
foreach ($teams as $column) {
 foreach ($column as $row) {
  echo $row." ";
 }
 echo "\n";
}
echo "------\n";

?>

07:ドット絵を表示する 
  • ドット絵を表示する
<?php
// ドット絵を表示する
$enemyImage =
 array(
  array(0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0),
  array(1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1),
  array(1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1),
  array(1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1),
  array(0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0),
  array(0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0),
  array(0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1)
 );
foreach ($enemyImage as $line) {
 foreach($line as $dot){
  if($dot==1){
   echo "#";
  } else {
   echo " ";
  }
 }
 echo "\n";
}
?>

08:3次元配列で複数のドット絵を表示する
  • 3次元配列の出力
foreach ($enemyImages as $enemyImage) {
 foreach ($enemyImage as $line) {
  foreach ($line as $dot) {
   if ($dot == 1) {
    echo "#";
   } else {
    echo " ";
   }
  }
  echo "\n";
 }
 echo "\n";
}

09:2次元配列で地図を表示する1
  • array_fill()関数:パラメータvalueを値とするnum個のエントリからなる配列を埋める。この際、キーは、start_indexパラメータから開始する。
array array_fill(int $start_index, int $num, mixed $value)
  • array_fillで配列を作る
<?php
// 2次元配列で地図を表示する1
$mapRow = array_fill(0, 20, "森");
?>
  • array_fillで2次元配列を作る
<?php
// 2次元配列で地図を表示する1
$mapRow = array_fill(0, 20, "森");
$landMap = array_fill(0, 10, $mapRow);

?>

10:2次元配列で地図を表示する2
  • 2で割り切れる行を道にする
  • 3で割り切れる列を道にする
  • 値が"森"の場合に道にする
foreach ($landMap as $i => $row) {
 echo $i.":";
 foreach ($row as $j => $column) {
  if (($i % 2 == 0 || $j % 3 == 0) && $column == "森") {
   $landMap[$i][$j] = "+";
  }
  echo $landMap[$i][$j];
 }
 echo "\n";
}

11:標準入力から2次元配列
  • ドット絵のデータ
7
0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1
0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1
1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1
1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1
0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0
  • ドット絵データを読み込む
<?php
// 標準入力から2次元配列
$numbers = trim(fgets(STDIN));

for ($i = 0; $i < $numbers[0]; $i++) {
 $table[] = explode(" ", trim(fgets(STDIN)));
}

foreach ($table as $line) {
 foreach ($line as $dot) {
  echo $dot;
 }
 echo "\n";
}
?>

12:2次元配列で画像を配置
  • 画像のパスの配列
$playerImages =
 array(
  "Empty.png",
  "Dragon.png",
  "Crystal.png",
  "Hero.png",
       "Heroine.png",);
  • キャラクター配置の2次元配列
//画像配置用の配列
$playerPositions =
 array(
  array(1, 1, 1, 1),
  array(0, 0, 0, 0),
  array(1, 2, 3, 4),
    );


感想
画像をインターネットから取ってきてHTMLで表示する部分は面白かったな。


最新の画像もっと見る

コメントを投稿