28日目:PHP学習 道場(連想配列操作、foreach関数の中で条件分岐) & PHP Ⅱ(クラス、インスタンス、プロパティ、メソッド)
<学習日>
28日目
<学習内容>
① PHP 道場(64-100%):道場で定着具合を確認!(連想配列操作、foreach関数の中で条件分岐)
② PHP Ⅱ(0-22%):クラスの勉強!(クラス、インスタンス、プロパティ、メソッド)
<参考>
Progateレベル:137
<学習内容詳細>
ということで、本日はPHPをごりごり進めました^^
PHPも個人的には好きな言語な気がします。というよりも、プログラミング言語に慣れてきただけ?そうであれば、めっちゃ嬉しい!
① PHP 道場(64-100%):道場で定着具合を確認!(連想配列操作、foreach関数の中で条件分岐)
なにが衝撃だったかというと、連想配列になると、配列のときのように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%):道場で定着具合を確認!(クラス、インスタンス、プロパティ、メソッド)
きましたね、クラスとかインスタンスとか!
JavaScript Ⅳで結構頑張って理解してきたところなので、いい感じで進められていると思います^^
↓2週間ほど前の学習内容
JavaScriptの時とは細かい書き方だけ違うものの、基本的に考え方は全く一緒(今のところ)^^
PHP ver.で学んだ内容について、具体的なcodeとを交えて記載すると以下のとおりとなります。
・クラスを作成する方法
クラスにはプロパティとメソッドがあり、「プロパティはそのクラスの特性」「メソッドはそのクラスの処理内容」と考えればOK。
そのうえで、具体的な定義方法は以下のcodeのとおり。
class クラス名 {
public $プロパティ名;
public function メソッド名()}
つまり別の言い方をするのであれば「プロパティは変数」「メソッドは関数」である。
・クラスからプロパティやメソッドを呼び出す方法
ひな型を「クラス」といって、個別のケースに対応したプロパティや、メソッドをそれぞれ「インスタンス」という。
クラスを作成してから、インスタンスとして呼び出すことで、一見手間がかかるように見えるけれど、データ数が増えれば増えるほど、手間が省けるという利点がある。
具体的にインスタンスを呼び出すには、以下のcodeを記述すればよい。
<プロパティの呼び出し>
$インスタンス名 = new クラス名();
$インスタンス名->プロパティ名 = '具体的な値';
echo $インスタンス名->プロパティ名;
<メソッドの呼び出し>
$インスタンス名 = new クラス名();
$インスタンス名->メソッド名();
ポイントは呼び出し時には、プロパティに「$」をつける必要がないこと。
メソッドの呼び出しは、echoが不要なこと(echoしたい場合は、メソッドの処理内容にechoを記載するということ)
はい、ということで今日はPHPをごりごり進めていきましたが、全体像を掴みながら進められている感じがして、ストレスなく勉強できています^^
ではでは、1日でも長く続けられるように頑張っていきます^^
同志の方、一緒に頑張っていきましょう!