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");

我需要的是:

INPUT : 电话前缀,例如 021

输出:FedEx、TNT 或 DHL >> 随机选择

这是另一个例子:

012 >> YYY Cargo(从“YYY Cargo”、“USPS”中随机选择)

112 >> UPS

等等

使用 MySQL 很容易,但我想通过使用 Array 来减少数据库连接。这个怎么做?

4

3 回答 3

3

您应该使用关联数组以便于访问。由于您想通过电话前缀访问信息,因此您应该将它们用作第一个数组的键。然后,您的第二个数组可以按城市索引,如下所示:

$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

试试这个代码。您将获得城市代码的随机快递( $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 Cargo 或 USPS

于 2012-08-08T09:25:58.840 回答
0

所以你想从“区号数组A”中指定一个区号,然后从“信使数组A”中生成一个随机的信使?

0快速而肮脏,但您可以在和count($couriersA) - 1(该数组中的条目数)之间生成一个随机数,然后在数组中选择该条目。

如果没有,您可以查看combinations- 因此获取所有可能的区号和快递对,然后从中随机选择一个。

于 2012-08-08T08:57:13.240 回答