1

我不确定这个脚本有什么问题。当我运行它时,它只给我缩写的第一个字母。

缩写部分不是我写的,是网上找的。脚本中唯一属于我的部分是 GET 和 Includes。

我已经将状态变量设置为一个状态,但我仍然得到相同的东西,所以我知道这不是我的代码部分。如果有人知道问题是什么,请告诉我。

这是建议的更新代码。仍然有同样的问题。

$state = 'Alabama';

function convert_state($name, $get = 'abbr') {
$states = array(
'Alabama'=>'AL',
'Alaska'=>'AK',
'Arizona'=>'AZ',
'Arkansas'=>'AR',
'California'=>'CA',
'Colorado'=>'CO',
'Connecticut'=>'CT',
'Delaware'=>'DE',
'Florida'=>'FL',
'Georgia'=>'GA',
'Hawaii'=>'HI',
'Idaho'=>'ID',
'Illinois'=>'IL',
'Indiana'=>'IN',
'Iowa'=>'IA',
'Kansas'=>'KS',
'Kentucky'=>'KY',
'Louisiana'=>'LA',
'Maine'=>'ME',
'Maryland'=>'MD',
'Massachusetts'=>'MA',
'Michigan'=>'MI',
'Minnesota'=>'MN',
'Mississippi'=>'MS',
'Missouri'=>'MO',
'Montana'=>'MT',
'Nebraska'=>'NE',
'Nevada'=>'NV',
'New Hampshire'=>'NH',
'New Jersey'=>'NJ',
'New Mexico'=>'NM',
'New York'=>'NY',
'North Carolina'=>'NC',
'North Dakota'=>'ND',
'Ohio'=>'OH',
'Oklahoma'=>'OK',
'Oregon'=>'OR',
'Pennsylvania'=>'PA',
'Rhode Island'=>'RI',
'South Carolina'=>'SC',
'South Dakota'=>'SD',
'Tennessee'=>'TN',
'Texas'=>'TX',
'Utah'=>'UT',
'Vermont'=>'VT',
'Virginia'=>'VA',
'Washington'=>'WA',
'West Virginia'=>'WV',
'Wisconsin'=>'WI',
'Wyoming'=>'WY'
);
if($get == 'name') {
// in this case $name is actually the abbreviation of the state name and you want the full name
$states = array_flip($states);
}

return $states[$name];
}
4

2 回答 2

4

这个问题已经有了一个很好的答案,但是由于 OP 仍然有这个问题,这里有一个替代解决方案。请注意,数组 $a2s 需要完全填充,因为我只添加了两个状态来保持简短。将以下内容保存到您选择的文件中(例如:state.php):

<?php
$state = $_GET['state'];
echo convert_state($state);

function convert_state($key) {
    $a2s = array( 
        'AL'=>'Alabama',
        'CA'=>'California'
    );
    $array = (strlen($key) == 2 ? $a2s : array_flip($a2s));
    return $array[$key];
}
?>

要运行上述内容,您需要在浏览器中键入以下内容之一(假设您的文件是 state.php):

state.php?state=AL
state.php?state=Alabama

该代码旨在以任何一种方式工作。

于 2012-12-05T19:29:55.323 回答
3

您应该将您的重构$states为:

$states = array(
  'Alabama' => 'AL',
  'Alaska' => 'AK',
  [...]
);

然后你的功能变成:

function convert_state($name, $get = 'abbr') {
  $states = [.. see above ..];

  if($get == 'name') {
    // in this case $name is actually the abbreviation of the state name and you want the full name
    $states = array_flip($states);
  }

  return $states[$name];
}
于 2012-12-05T16:53:18.897 回答