0

JSONファイルからデータを取得して出力する、次のようなファイルがあります。

<?php
$game = "Test";
$itemsArray = json_decode(file_get_contents("http://test.com/stamps.json"), true);

echo "<table>";
echo "<tr><th>Image</th><th>Name</th><th>Difficulty</th><th>Description</th></tr>";

foreach ($itemsArray as $item) {
    $name = $item['name'];
    $stamps = $item['stamps'];

    if ($name == $game) {
        foreach ($stamps as $stampData) {

            $stampID = $stampData['stamp_id'];
            $stampName = $stampData['name'];
            $stampLevel = $stampData['rank_token'];
            $stampDescription = $stampData['description'];
            $stampMember = $stampData['is_member'];
            $stampID = $stampData['stamp_id'];

            if ($stampMember == "true") {
                $stampMember = "Yes";
            } else {
                $stampMember = "No";
            }

            echo "<tr>";

            echo "<td>";
            echo "Coming soon";
            echo "</td>";

            echo "<td>";
            print_r($stampName);
            echo "</td>";

            echo "<td>";
            print_r(ucwords($stampLevel));
            echo "</td>";

            echo "<td>";
            print_r($stampDescription.".");
            echo "</td>";

            echo "</tr>";

        }
    }
}

echo "</table>";
?>

ただし、JSON ファイルにある順序でデータを出力します。これはすべて混同されています。

$stampData['rank_token'] が保持するカテゴリで出力をソートできる方法があるかどうか疑問に思っていました。

$stampData['rank_token'] は、イージー、ミディアム、ハード、エクストリームのカテゴリを保持します。このスクリプトでカテゴリを次の順序で出力する方法はありますか: 簡単、中程度、難しい、極端ですか?

JSON デコード後の配列の小さな例:

Array
(
[13] => Array
        (
            [name] => Blah blah
            [description] => Blah blah blah
            [parent_group_id] => 8
            [display] => Blah : Blah
            [stamps] => Array
                (
                    [73] => Array
                        (
                            [stamp_id] => 73
                            [name] => Blah
                            [is_member] => 
                            [rank] => 1
                            [description] => Blah blah blah
                            [rank_token] => easy
                        )

                    [80] => Array
                        (
                            [stamp_id] => 80
                            [name] => Blah
                            [is_member] => 
                            [rank] => 2
                            [description] => Blah blah blah
                            [rank_token] => medium
                        )

                 )
          )
)
4

1 に答える 1

0

PHP の usort を参照してください

function my_compare($a, $b) {
  if ($a["rank_token"] > $b["rank_token"]) return 1;
  if ($a["rank_token"] < $b["rank_token"]) return -1;
  return 0;
}

usort($stampData, "my_compare");
于 2013-03-12T21:15:36.097 に答える