我正在考虑使用Array来存储这些微小的数据,而不是使用数据库。但是,我很难"调用"数据,因为这是多维数组。
这是我的情况:
- 我有几个来自不同城市的电话前缀:
$CityA = array("021","031","041","051"); $CityB = array("011","012","013","014"); $CityC = array("111","112","113","114");
- 另外,我有几个这些城市的快递公司:
$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"生成一个随机信使?
快速且脏,但您可以在 0
和 count($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