PHP多维数组:电话前缀与快递名称


PHP Multi Dimensional Array : Phone Prefix vs Courier Name

我正在考虑使用Array来存储这些微小的数据,而不是使用数据库。但是,我很难"调用"数据,因为这是多维数组。

这是我的情况:

  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

输出:联邦快递,TNT或DHL>>随机选择

这是另一个例子:

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

112>>不间断电源

等。

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

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

$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];

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

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

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

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