如果这个问题得到了解答我很抱歉,但我已经搜索过高低,并且无法解决这个问题。我有一个存储客户地址的MySQL数据库,我希望能够从表中提取地址并打印出来以便从网页发送邮件。问题是状态名称不是表中的缩写形式,所以我一直试图转换它们。当我拉数据时,我将它存储到一个数组。保存状态的数组称为$ state,我使用计数器($ data)从每个数组中提取每组值。这是我对函数的代码:
function convertState($name){
switch($name){
case "Alabama":
return "AL";
break;
case "Alaska":
return "AK";
break;
case "Arizona":
return "AZ";
break;
[ ... list all other states ... ]
case "Wyoming":
return "WY";
break;
case "Other" || "other":
return $province;
break;
default:
return;
}
我觉得它应该可以工作,但是当我尝试传递它时:convertState($state[$data]);
没有任何事情发生所有州名仍然拼写出来。我希望它能将每个州的缩写转换成它的缩写。
答案 0 :(得分:4)
您是否考虑过一个关联数组而不是使用case语句,其中状态的名称是键,缩写是值?
例如:
$states = array(
"Alabama" => "AL",
"Alaska"=> "AK" ...
);
然后当你需要缩写时,你可以通过传递州名作为密钥来获得它。
$ states [' Alabama']将返回' AL'
答案 1 :(得分:1)
我假设您使用某种循环,因为您声明$data
是州的索引吗?这让我相信你的$state
数组看起来像这样(如果我错了,纠正我)
$state = ["Alabama", "Alaska", ......etc];
你正在使用这样的循环:
for($i = 0; $i < count($states); $i++) {
convertState($states[$i]);
}
或潜在的foreach()
循环。
问题在于您返回值而不是分配值。你可以做什么,如@guido
的评论中所述,这个:
$state[$data] = convertState($state[$data]);
分配正确的值。或者您可以使用PHP's by-reference并执行以下操作:
function convertState(&$name){
switch($name){
case "Alabama":
$name = "AL";
break;
case "Alaska":
$name = "AK";
break;
...........
...... etc
default:
return;
}
return $name;
}