30歳 独学で始めるプログラミング ~WEBデザイン・アプリ開発~

ITスキルに興味がでたので、codeを書いてみたら面白くてハマってしまいました!日々何をやったのかを中心に、記事を書いていきたいと思います。

28日目:PHP学習 道場(連想配列操作、foreach関数の中で条件分岐) & PHP Ⅱ(クラス、インスタンス、プロパティ、メソッド)

<学習日>

28日目

<学習内容>

① PHP 道場(64-100%):道場で定着具合を確認!(連想配列操作、foreach関数の中で条件分岐)

PHP Ⅱ(0-22%):クラスの勉強!(クラス、インスタンス、プロパティ、メソッド)

<参考>

Progateレベル:137

 

<学習内容詳細>

f:id:yakuzen_kokoro:20200731212550p:plain

ということで、本日はPHPをごりごり進めました^^

 

PHPも個人的には好きな言語な気がします。というよりも、プログラミング言語に慣れてきただけ?そうであれば、めっちゃ嬉しい!

 

① PHP 道場(64-100%):道場で定着具合を確認!(連想配列操作、foreach関数の中で条件分岐)

f:id:yakuzen_kokoro:20200731212601p:plain

 

なにが衝撃だったかというと、連想配列になると、配列のときのようにfor関数で無理くり繰り返し計算をさせることが難しい(無理?)になってしまったこと^^;;

 

for関数を崇め奉っていた私としては、それなりに考え方をシフトする必要がありました。

 

結論から言えば、foreach関数を使えば問題ないので、今後は基本的にforeach関数に慣れていこうと思います!

 

では、具体的なcodeを紹介しながら、学んだ内容について書いていきます^^

 

連想配列から値を取り出す方法
たとえば、

 

$man = array('name' => 'Mark', 'age' => 25 )

 

という連想配列から、「男の名はMark。年齢は25歳だ」とアウトプットしたい場合は以下のとおりのcodeとなる。

 

echo "男の名は{$man['name']}。年齢は{$man['age']}だ";


ここで、連想配列の中に複数の連想配列が格納されている場合は、foreach関数を使って記述すればよい。

通常の配列の場合だと、for関数でも記述できたが、連想配列の場合はforeachにしないと難しそう。これは、数字じゃなくてキーで、取り出したい値を指定するから。

 

例えば、$menを連想配列で複数人の情報を記述しており、そのすべての情報を「男の名はMark。年齢は25歳だ」のような形でアウトプットしたい場合は、以下のとおりのcodeとなる。

 

foreach($men as $man){
echo "男の名は{$man['name']}。年齢は{$man['age']}だ";
}


ついでに、年齢の合計を求めたい場合は、以下のとおり$sumのような変数を定義しておいて、foreach関数の処理の中にぶっこんで、最後にechoすればよい。

foreach関数の中に、$sumのechoをぶっこむと、毎回その人の情報までの合計年齢を出されてしまうので要注意。また、foreach関数前に$sumは定義しておかないとエラーになる。

たとえば、追加の情報として「男たちの年齢の合計は○○だ」という情報を出したい場合は、以下のとおりのcodeとなる。

 

$sum = 0;

foreach($men as $man){
echo "男の名は{$man['name']}。年齢は{$man['age']}だ";
$sum += $man['age'];
}

echo "男たちの年齢の合計は{$sum}だ";


さらに一歩踏み込んで、最高齢の人の名前と年齢を抽出したい場合を考えよう。その場合は、foreach関数の処理の中に、if関数をぶっこんでおけばよい。

例えば、追加の情報として「最高齢の男の名は○○で、なんと××歳だ」という情報を出したい場合は、以下のとおりのcodeとなる。


$sum = 0;
$max = 0;
$maxName = 'none';

foreach($men as $man){
echo "男の名は{$man['name']}。年齢は{$man['age']}だ";
$sum += $man['age'];
if($max < $man['age']) {
$max = $man['age'];
$maxName = $man['name'];

}
}

echo "男たちの年齢の合計は{$sum}だ";
echo "最高齢の男の名は{$maxName}で、なんと{$max}歳だ";

 

こんな感じです。

最後の方の内容は、こう色々と使いこなしている感があって、とても面白かったです。

 

スライドやヒントも見ないで、このくらいであれば記述できるようになってきたので、1月前と比較して、少しはプログラミング脳になってきたんじゃないかな、と感じております!

 

 ② PHP 道場(0-22%):道場で定着具合を確認!(クラス、インスタンス、プロパティ、メソッド)

f:id:yakuzen_kokoro:20200731212739p:plain

きましたね、クラスとかインスタンスとか!

 

JavaScript Ⅳで結構頑張って理解してきたところなので、いい感じで進められていると思います^^

 

↓2週間ほど前の学習内容

yakuzen-kokoro.hatenablog.jp

 

JavaScriptの時とは細かい書き方だけ違うものの、基本的に考え方は全く一緒(今のところ)^^

 

PHP ver.で学んだ内容について、具体的なcodeとを交えて記載すると以下のとおりとなります。

 

・クラスを作成する方法
クラスにはプロパティとメソッドがあり、「プロパティはそのクラスの特性」「メソッドはそのクラスの処理内容」と考えればOK。

そのうえで、具体的な定義方法は以下のcodeのとおり。

 

class クラス名 {
public $プロパティ名;
public function メソッド名()}

 

つまり別の言い方をするのであれば「プロパティは変数」「メソッドは関数」である。


・クラスからプロパティやメソッドを呼び出す方法
ひな型を「クラス」といって、個別のケースに対応したプロパティや、メソッドをそれぞれ「インスタンス」という。

クラスを作成してから、インスタンスとして呼び出すことで、一見手間がかかるように見えるけれど、データ数が増えれば増えるほど、手間が省けるという利点がある。

 

具体的にインスタンスを呼び出すには、以下のcodeを記述すればよい。

 

<プロパティの呼び出し>
$インスタンス名 = new クラス名();
$インスタンス名->プロパティ名 = '具体的な値';
echo $インスタンス名->プロパティ名;

 

<メソッドの呼び出し>
$インスタンス名 = new クラス名();
$インスタンス名->メソッド名();

 

ポイントは呼び出し時には、プロパティに「$」をつける必要がないこと。

メソッドの呼び出しは、echoが不要なこと(echoしたい場合は、メソッドの処理内容にechoを記載するということ)

 

はい、ということで今日はPHPをごりごり進めていきましたが、全体像を掴みながら進められている感じがして、ストレスなく勉強できています^^

 

 

ではでは、1日でも長く続けられるように頑張っていきます^^

同志の方、一緒に頑張っていきましょう!