PHP講座#10

今回の記事もPHP講座です!いつも通り手を動かしながら勉強していきましょう。

前回の復習

 前回の記事では配列の書き方について学びましたね。
 書き方の復習は今回の記事のほうでも触れるので割愛します。(^▽^)/

前回の練習問題の解答

1問目

 array関数を使って、4個の要素をもつ配列を作ってみてください。(各要素の値はお任せします)



解答

<?php
$color = array("blue", "red", "black", "yellow");
?>

2問目

 配列を[ ] を使って、3つの要素をもつ配列になるように作ってください。



解答

<?php
$number[] = 12;
$number[] = 23;
$number[] = 34;
?>

3問目

 次の連想配列のソースコードを試してみてください。またそれぞれのインデックスの要素の値をechoを用いて出力してみてください。

<?php
$noun = array("black", "cat"=>"猫", "dog"=>"犬", "lion"=>"ライオン", "rabbit"=>"うさぎ", "yellow", "horse"=>"馬", "red", "blue");
echo $noun["lion"]."<br>";
echo $noun[0]."<br>";
?>



解答
ライオン
black

<?php
$noun = array("black", "cat"=>"猫", "dog"=>"犬", "lion"=>"ライオン", "rabbit"=>"うさぎ", "yellow", "horse"=>"馬", "red", "blue");
echo $noun["cat"]."<br>";
echo $noun["dog"]."<br>";
echo $noun["lion"]."<br>";
echo $noun["rabbit"]."<br>";
echo $noun["horse"]."<br>";
echo $noun[0]."<br>";
echo $noun[1]."<br>";
echo $noun[2]."<br>";
echo $noun[3]."<br>";
?>

 連想配列を作成する際にキー("名前"=> のやつ)を指定しない場合、キーのついていないものを前から順に0, 1, 2, ... というインデックスを割り当てられる。

今回の学習内容

 今回は二次元配列について学んでいきます。

 二次元配列は配列の応用で実装できるのですが、配列自体が理解できていないと二次元配列は理解できないので、軽く配列の復習をしてから今回の内容を勉強していきましょう。
 
 配列というのは、複数の値をロッカーのように連続した箱の中に格納して関連したデータをひとまとめに扱うために開発されたものでしたね。
 配列を作成するには大きく分けて2通りの方法がありました。1つはarray関数を用いた作成方法で、もう1つは[ ]を用いた作成方法でしたね。
 復習を兼ねてソースコードを書いてみましょう。

<?php
/*array関数を用いて配列を作成*/
$food = array("apple", "egg", "fish", "rice");
/*[ ]を用いて配列を作成*/
$food[] = "suger";
/*連想配列を作成*/
$animal = array("cat"=>"猫", "dog"=>"犬", "lion"=>"ライオン", "rabbit"=>"うさぎ", "horse"=>"馬");
?>

 配列の作り方までは勉強しました。それでは配列を使った際に役立つものを紹介していきます!
 次のソースコードを書いて実行してみてください。

<?php
/*array関数を用いて配列を作成*/
$value_a = array(1, 2, 3, 4);
$value_b = array(5, 6, 7, 8, 9);
$number = array_merge($value_a, $value_b); //2つの配列を結合
echo $number[4]."<br>";
array_push($number, 10); //配列に新しい要素を追加
echo $number[9]."<br>";

5
10

 array_merge関数とarray_push関数が出てきました。正直この2つの関数は出番がほとんどないのですがこんな便利なものも一応あるよということを知ってもらうだけに載せておきました。(^^)
 折角なので、この2つの関数の処理を見ていきましょう。

$number = array_merge($value_a, $value_b);
 この部分では、2つの配列$value_aと$value_bを結合させて新しく$numberという配列を作りましょう という処理をしています。今回は引数に$value_a, $value_bの順番でarray_merge関数を用いているので、配列の要素の並び順は、$value_aの要素の後ろに$value_bの要素がくるような並び順になります。
 array_merge関数は、array_merge_recursive関数や+演算子とは少し挙動が違うので、余力のある人はそのあたりの違いを調べて試してみるのもいいかもしれませんね。

array_push($number, 10); //配列に新しい要素を追加
 この部分では、配列$numberに新しい要素10という値を入れよう という処理をしています。今回は引数に$number, 10の2つだけですが、$number, 10, 11, 12のように複数個書いても問題なく追加されます。
 この関数は[ ]で代用できるのでほとんど使う機会はありません。

 そのほかにもarray_search関数やarray_keysやin_arrayやarray_replaceやsortなどの便利な関数がたくさんあります。正直あまり使わないので、調べて使えれば十分です。ただ配列を扱う上でsort関数ぐらいは覚えておいた方が良いので、練習問題で問題を解きながらsort関数を理解していきましょう。


 単純な配列についてのお話はこの辺までにして、2次元配列の話をしていきます。
 2次元配列というのは今まで勉強してきた配列を応用することで作ることができます。2次元配列のイメージは、表のように縦と横の方向に値を格納できる領域が連続したものと考えるとわかりやすいです。
 具体的に、作り方の説明をしていきます。

 2次元配列を作るためには、普通の配列の各要素に配列を作成することで作ることができます。array関数を使った場合と、[ ] を使った場合の2通りの作成方法を見ていきましょう。

array();を使った場合

<?php
$name = array("宮本", "掛川", "鈴木", "井龍");
$age = array(30, 35, 30, 34);
$member = array($name, $age); //array();の中に上の2行で作った配列が入っています
?>

[ ]を使った場合

<?php
$member = [["宮本", 30], ["掛川", 35], ["鈴木", 30], ["井龍", 34]];
?>

 どちらの方法でも$memberという名前の同じ2次元配列が作成できます。これを応用していくことで3次元配列、4次元配列も作ることができます。ちなみに要素を指定するときは、[ ]の数が以下のように2つ必要になります。(X行目のY列目の値が欲しいみたいに指定します)

$member[0][1] =31;

まとめ

 今回は、配列関連の関数について少しだけ学びました。配列って便利だなって実感できるのはあと2回分くらい後ろの記事になると思いますw楽しみにしておいてください!!

 また、二次元配列について勉強していきました。配列の作り方がごちゃごちゃしてわかりづらかったかもしれませんが、外の配列の各要素に配列が入っているイメージがつかめていれば大丈夫でしょう!

練習問題

1問目

 sort関数を使うことで配列の中の値を昇順に並び替えることができます。(降順に並べ替えるときはrsort関数を使います)
 次の9個の要素をもつ配列を作り、昇順に並び替えてください。そして中央値を出力してください。

12, 41, 33, 85, 17, 41, 36, 91, 27

2問目

 2次元配列を作ってください。(特に指定はないですが、何も思いつかなければ、要素として出席番号と名前と部活の3つのデータを持つ学生を集めた名簿を作成してみてください)

3問目

 次のソースコードに1行付け足して、2つの配列をarray_merge関数を用いて結合してください。

<?php
$ability =["fire", "aqua", "thunder", "storm"];
$power = ["time leap", "teleport", "invisible"];
?>

最後まで見ていただきありがとうございます。また別の記事でお会いできることを祈っております。



www.iwachoco-blog.com
www.iwachoco-blog.com