0

PHPに製品タイプの配列があります。これは次のようになります。

$types = [
    0 => "cars",
    1 => "motorbikes",
    2 => "boats",
    3 => "airplanes"
];

そのため、ユーザーがそれを取得または保存したい場合は、次のように、カテゴリのIDを使用してデータベースに挿入またはデータベースから取得できます。

select * from items where type = 0;

さて、私の疑問は次のとおりです。整数のインデックスキーを使用している場合、次を使用することは同じではないでしょうか。

$types = ["cars", "motorbikes", "etc."];

PHPは整数の自動順序付けを提供するためです。

この場合、どれがベストプラクティスだと思いますか?最初の例の利点は、プライベートカテゴリなどのように、異なるキーを割り当てることができるという事実だけに思えますが、実際にはわかりません。

値を変換する必要があることを考慮することも重要です。IDを使用するだけでも考慮する必要がありますか?お気に入り

$types = ["t1", "t2", "etc."];

次に、翻訳を別の場所に挿入しますか?

4

5 に答える 5

3

2つの可能なオプションがあります。

  1. 手動でインデックスを設定した現在のオプション1。
  2. より良い方法-これらのカテゴリを保持するDB内のテーブル。これにより、キーと名前の関連付けを失うことなくカテゴリを編集できます。

現在のオプション2はまったくオプションではありません。カテゴリを挿入または削除すると、注文が中断されます。

ここでインデックスを設定します。

    $types = [
        3 => "airplanes"
  index ^         ^ value

したがって、リストから車を削除しても、インデックスはその値に関連付けられたままになります。

$types = [
    1 => "motorbikes",
    2 => "boats",
    3 => "airplanes"
];

一方、手動でインデックスを設定しない場合

$types = ["motorbikes", "boats", "airplanes"];

飛行機はその関連付けを失い、ボートになります。Webアプリケーションに期待する魔法ではありません

于 2013-01-17T15:14:36.450 に答える
0

それはすべてプロジェクトに依存します。データベースのアイテムの配列を使用している場合は、キーをデータベースのIDにして、必要に応じて使用できるようにします。IDが必要ない場合は、キーを定義する必要はありません。0とにかく始まります。

于 2013-01-17T15:08:57.133 に答える
0

あなたの最初のアプローチは良いものだと思います。デフォルトの翻訳としてそれを行うこともできます:

$types["en"] = []

もちろん、デフォルトの言語変数がある場合は、最初から使用できます。将来的には、さらに翻訳して拡張する方がはるかに簡単になります。

配列は同じように見えるので、注文してキーをIDとして使用できますが、これはベストプラクティスではありません。すべて、配列、php、データベース間の関係をどのように設計するかによって異なります。

于 2013-01-17T15:09:27.743 に答える
0

私はあなたの質問を見逃しているかもしれませんがarray、PHPでは基本的にハッシュマップが順序付けられています。したがって["cars", "motorcycles", "etc."]、保存順序が保証されます(そして、キー0、1、2があります)。ただし、代わりに次のことを検討することもできます

class AutoTypes {
    const TYPE_CAR = 0;
    const TYPE_MOTORCYCLE = 1;
    const TYPE_BOAT = 2;

    public static function getLabels() {
        return array(self::TYPE_CAR => 'Car', self::TYPE_MOTORCYCLE => 'Motorcycle', self::TYPE_BOAT => 'Boat');
    }
}

このようにして、で自動タイプを参照できますAutoTypes::CONSTANT。配列内の明確なインデックスを使用せずに、ある時点でオートバイを削除したい場合は、アイテムを削除するとロジックが壊れます。

于 2013-01-17T15:12:49.460 に答える
0

私の意見では、この状況では使用する方が良いです

$types = ["cars", "motorbikes", "etc."];

あなたが言うように、PHPは0から始まる整数インデックスを自動的に割り当てます。したがって、とにかく割り当てられるインデックスを指定する必要はありません。

ただし、インデックスを手動で指定せずに配列を宣言するだけでは十分に明確ではないと感じる場合は、それはあなた次第です。しかし、個人的には、有能なプログラマーには明らかだと思います。したがって、これらのインデックスを手動で指定するのは時間とハードディスクのスペースの無駄です。

于 2013-01-17T16:23:33.043 に答える