前提・実現したいこと
多次元配列から下記の処理を実行したいです。
reduceなどの関数を使用して実現したいです。
①数学が最高点の名前を表示
②国語が最低点の名前を表示
③4人の各科目の平均点を表示
④男性と女性の各科目の平均点を表示
①と②に関してはfor文を使い実現できましたが、今後の参考としてreduceなどを使った処理も知りたいです。
<?php $usrs = [ ['名前' => '山田', '性別' =>'男', '数学' => 78, '国語' => 47, '英語' => 92], ['名前' => '田中', '性別' =>'女', '数学' => 12, '国語' => 88, '英語' => 67], ['名前' => '高橋', '性別' =>'男', '数学' => 56, '国語' => 34, '英語' => 77], ['名前' => '橋本', '性別' =>'女', '数学' => 97, '国語' => 55, '英語' => 45] ]; $math = array_column($usrs, "数学"); $language = array_column($usrs, "国語"); $english = array_column($usrs, "英語"); $count = count($usrs); #数学が最高点の名前を表示 $max_math = max($math); for($i = 0; $i < $count; ++ $i) { if($max_math == $math[$i]) { echo $usrs[$i]["名前"]."\n"; } } #国語が最低点の名前を表示 $min_language = min($language); for($i = 0; $i < $count; ++$i) { if($min_language == $language[$i]) { echo $usrs[$i]["名前"]."\n"; } } ?>
③と④でも関数の中にforeach文とif文を使用してどうにか実現しようとしましたが、できませんでした。
また、reduceについても調べましたが、使い方が全く話からにためコードの説明などしていただけると幸いです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー