忍者CODE

ログイン

7
連想配列を操作しよう

PHPの問題

PHP

完了にする!
問題
テストの平均点の高い順に画面に表示しよう
自分の環境に書くコード
              $list[] = ['name' => 'A', 'test' => [10, 3, 5]];
$list[] = ['name' => 'B', 'test' => [7, 9]];
$list[] = ['name' => 'C', 'test' => []];
$list[] = ['name' => 'D', 'test' => ""];
$list[] = ['name' => 'E', 'test' => [7]];
$list[] = ['name' => 'F', 'hoge' => []];
¥PHP¥
            
期待する画面
B: 8
E: 7
A: 6
C: 0
D: 0
F: 0
ログインして解答を見る
コードのアイコン

解答ソースコード

              $list[] = ['name' => 'A', 'test' => [10, 3, 5]];
$list[] = ['name' => 'B', 'test' => [7, 9]];
$list[] = ['name' => 'C', 'test' => []];
$list[] = ['name' => 'D', 'test' => ""];
$list[] = ['name' => 'E', 'test' => [7]];
$list[] = ['name' => 'F', 'hoge' => []];
for ($i = 0; $i < count($list); $i++) {
    $item = $list[$i];
    $total = 0;
    $count = 0;
    if (isset($item['test']) && is_array($item['test'])) {
        foreach ($item['test'] as $point) {
            $total += $point;
            $count++;
        }
    }
    if ($count) {
        $list[$i]["average"] = $total / $count;
    } else {
        $list[$i]["average"] = 0;
    }
}
usort($list, function($a, $b) {
    return $b["average"] - $a["average"];
});
foreach ($list as $item) {
    echo "{$item["name"]}: {$item["average"]}<br>\n";
}
¥PHP¥
            
答えのアイコン

解説

配列に配列を格納できるように連想配列にも連想配列や配列が格納できるぞ。
今回の課題はtestが存在しないケース、配列ではないケースがある。
issetやis_array等を駆使して処理できるデータ形式になっているか確認しよう。

PHPを含む大部分のプログラム言語では0除算はエラーとなる。
除算する場合は0で割らないように注意しよう。

連想配列は自由にキーの付け外しが可能となっている。
ここでは平均点を格納して後の処理につなげるようにしている。

usortにソートロジックを実装した関数を渡そう。
コールバック関数でソートの基準値を返却するとリストを並び替えてくれるぞ。

今回はコールバック関数ではなくクロージャ(無名関数)を利用した。
一部の関数では必須なので覚えておこう。
twitterのアイコン
活動記録をTweetする
1.PHPについての説明と表示
続きの動画を見たい方は公式LINEから「PHP」と送信すると動画が見れます。

甲賀

なら実務レベルで使えるスキルを
体系的に学ぶことが可能です

Web制作学習は、決して楽ではありませんが
「正しい方向で」「コツコツ」と続ければ、
必ずスキルアップする事が可能です。

甲賀では、挫折せずに学習を継続するための
カリキュラム・サポート体制をご用意しています。

↓↓↓↓

ステップバイステップで
着実にスキルが身につくカリキュラム

  • step 01
    初心者でもよく分かる!
    Web制作の基礎の基礎
    • 1.知っておこうWeb制作に関する基礎知識の話

    • 2.HTMLの書き方や役割を基礎から学ぶマークアップ入門

    • 3.CSSで挫折しない為の基礎学習【超重要プロパティ】

    • 4.基礎を終えたらHTMLコーディングを鍛えよう(デザインから)

    • 5.初心者向けHTMLコーディング完全解説(STEP1総まとめ)

  • step 02
    真似して覚えるWeb制作
    (デザイン〜プログラミングまで)
    • 1.属性ってなに?などなどHTML,CSSの深堀り編

    • 2.デザイナーから直接学ぶ猫ちゃんサイトのデザイン解説

    • 3.鎧模写-YOROIMOSYA【銅の鎧】

    • 4.JavaScriptで学ぶプログラミングの基本のきほん【16項目】

  • step 03
    動きをつけたり、効率化!
    脱初心者を目指すためのスキルを学ぼう
    • 1.jQueryの基本的な使い方から応用まで【プラグイン解説あり】

    • 2.Web制作でCSSを簡単に書くためのSASS入門【小技あり】

    • 3.現場で使うCSS設計の考え方参考サイトを元に解説

    • 4.生のJavaScriptだけで英単語アプリを作ろう(音声読み上げ付き)

  • step 04
    ここまでくれば中級者!
    ちょこっと応用編のWeb制作
    • 1.JavaScriptの屋敷【鳳凰の間】

    • 2.JavaScriptで作るLINE風チャットボット

    • 3.コマンドラインとアプリ操作を同時に学べるGit【15選】

    • 4.EJSを使いコーディング力を中級者まで引き上げる

  • step 05
    実務で必須の制作スキル
    WordPressについて学ぶ
    • 1.鎧模写-YOROIMOSYA【銀の鎧】

    • 2.PHPを基礎から学びたい人向け14項目から学ぶ【入門】

    • 3.PHPで簡易的な掲示板を作ってみよう【コーディングあり】

    • 4.甘えを吹き飛ばす!WordPress開発

    • 5.WordPressで¥400,000の案件を徹底解説!

    • 6.WordPress有料テーマSnow Monkeyの解体書

甲賀を詳しく見る

プログラミングスキルが
一気に上がる!
有料級の解説動画19本
を今なら無料でGETできる!

忍者CODEの公式LINE登録後
LINE内にあるURLよりご覧になれます

  • プログラミング本気で学習してる方
  • もちろん完全無料で且つ手続き不要
  • 将来プログラミングで稼ぎたい方
  • 動画解説で真剣に学びたい方
スキルアップ動画をGET