【演習問題1】
一番若い人を取得してください。
正解
<?php $array = [ ['area' => '東京都', 'name' => '田中', 'age' => 25, 'sex' => '女性'], ['area' => '神奈川', 'name' => '樋口', 'age' => 10, 'sex' => '女性'], ['area' => '大阪府', 'name' => '山本', 'age' => 16, 'sex' => '女性'], ['area' => '京都府', 'name' => '小山', 'age' => 10, 'sex' => '女性'] ]; // ageだけの配列を作る $ageArray = array_column($array, 'age'); // ageの最小値の要素だけ取得 foreach($array as $value){ if($value['age'] == ($minAge = min($ageArray))){ echo '一番若いのは、' . $value['age'] . '歳で、' . $value['area'] . 'の' . $value['name'] . 'さんです。' . '<br>'; } } ?>
【結果】
一番若いのは、10歳で、神奈川の樋口さんです。
一番若いのは、10歳で、京都府の小山さんです。
【考察】
ageを集めて一番小さい数字を決める。
if文でageがその数字の場合のみ結果を表示。
【調べたもの】
■配列から要素を検索する関数
aruku-hito.hatenablog.jp
■配列から最小値を検索する関数
PHP で最大値・最小値を取り出す - Qiita
不正解
<?php $array = [ ['area' => '東京都', 'name' => '田中', 'age' => 25, 'sex' => '女性'], ['area' => '神奈川', 'name' => '樋口', 'age' => 10, 'sex' => '女性'], ['area' => '大阪府', 'name' => '山本', 'age' => 16, 'sex' => '女性'], ['area' => '京都府', 'name' => '小山', 'age' => 10, 'sex' => '女性'] ]; $youngest = $array[0]; foreach($array as $key => $value){ if( $youngest['age'] > $value['age']){ $youngest = $value; } } echo '一番若いのは、' . $youngest['age'] . '歳で、' . $youngest['area'] . 'の' . $youngest['name'] . 'さんです。'; ?>
【結果】
一番若いのは、10歳で、神奈川の樋口さんです。
【考察】
if文ですべての要素のageに対して小さい要素のみ残す。
変数を上書きし続けるため結果は1つ。そのためageの数値は同じ人がいなければOK。
例えば、競走で1位を出すなどの場合はOK。