1

このスクリプトの何が問題なのかわかりません。実行すると、略語の最初の文字しか表示されません。

私は略語の部分を書きませんでした、私はそれをオンラインで見つけました。私のものであるスクリプトの唯一の部分は、GETとインクルードです。

状態変数を状態に設定しましたが、それでも同じものが得られるので、それがコードの自分の部分ではないことがわかります。問題が何であるかを誰かが知っているなら、私に知らせてください。

提案された更新されたコードは次のとおりです。まだ同じ問題があります。

$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 にはまだ問題があるため、別の解決策があります。これを短くするために 2 つの状態のみを追加したため、配列 $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 に答える