0

データベースを使用する代わりに、配列を使用してこの小さなデータを格納することを考えています。しかし、これは多次元配列であるため、データを「呼び出す」のは困難です。

これが私の状況です:

  1. さまざまな都市の電話プレフィックスがいくつかあります。
$CityA = array("021","031","041","051");

$CityB = array("011","012","013","014");

$CityC = array("111","112","113","114");
  1. また、私はそれらの都市のためにいくつかの宅配便を持っています:
$CityA = array("FedEx", "TNT", "DHL");

$CityB = array("YYY Cargo", "USPS");

$CityC = array("UPS", "Regular Mail", "XXX Cargo");

私が必要なのは:

入力:電話プレフィックス、たとえば021

出力:FedEx、TNTまたはDHL>>ランダムに選択

別の例を次に示します。

012 >> YYYカーゴ(「YYYカーゴ」、「USPS」からランダムに選択)

112 >> UPS

MySQLを使用すると非常に簡単ですが、Arrayを使用してデータベース接続を減らしたいと思います。これを行う方法?

4

3 に答える 3

3

アクセスを容易にするために、連想配列を使用する必要があります。電話プレフィックスで情報にアクセスしたいので、これらを最初の配列のキーとして使用する必要があります。次に、次のように、2番目の配列に都市ごとにインデックスを付けることができます。

$cities = array( 021 => "CityA", 031 => "CityA", 011 => "CityB")
$couriers = array( "CityA" => array("FedEx", "TNT", "DHL"),
                   "CityB" => array("YYY Cargo", "USPS"),
                   "CityC" => array("UPS", "Regular Mail", "XXX Cargo"));

したがって、あなたの例では、プレフィックス021の宅配便を取得するために、次のようにアクセスできます。

$city = $cities[$phone_prefix];
$courier_key = array_rand($couriers[$city]);
$courier_name = $couriers[$city][$courier_key];
于 2012-08-08T09:19:54.243 に答える
0

では、「市外局番配列A」から市外局番を指定し、「宅配便配列A」からランダムな宅配便を生成しますか?

0迅速で汚いですが、とcount($couriersA) - 1(その配列内のエントリの数)の間に乱数を生成してから、配列内のそのエントリを選択することができます。

そうでない場合は、次のことを確認できますcombinations。つまり、市外局番と宅配便の可能なすべてのペアを取得し、その中からランダムに1つを選択します。

于 2012-08-08T08:57:13.240 に答える
0

このコードを試してください。都市コードのランダムな宅配便を受け取ります($ value = '111';)

$CityA = array("021","031","041","051");
$CityB = array("011","012","013","014");
$CityC = array("111","112","113","114");
$courierA = array("FedEx", "TNT", "DHL");
$courierB = array("YYY Cargo", "USPS");
$courierC = array("UPS", "Regular Mail", "XXX Cargo");

$value = '111';    // Your City Code

if(in_array($value, $CityA)){
    shuffle($courierA);
    echo $courierA[0];
}
else if(in_array($value, $CityB)){
    shuffle($courierB);
    echo $courierB[0];
}
else if(in_array($value, $CityC)){
    shuffle($courierC);
    echo $courierC[0];
}

出力:YYY貨物またはUSPS

于 2012-08-08T09:25:58.840 に答える