4

私はそのように世界のすべての国の配列を持っています:

$countries = array(
  "GB" => "United Kingdom",
  "US" => "United States",
  "AF" => "Afghanistan",
  "AL" => "Albania",
  "DZ" => "Algeria",
  "AS" => "American Samoa",
  "AD" => "Andorra",
  "AO" => "Angola",
  "AI" => "Anguilla",
  "AQ" => "Antarctica",
  "AG" => "Antigua And Barbuda",
  "AR" => "Argentina",
  "AM" => "Armenia",
  "AW" => "Aruba",
  "AU" => "Australia",
  "AT" => "Austria",
  "AZ" => "Azerbaijan",
  "BS" => "Bahamas",
  "BH" => "Bahrain",
  "BD" => "Bangladesh",
  "BB" => "Barbados",
  "BY" => "Belarus",
  "BE" => "Belgium",
  "BZ" => "Belize",
  "BJ" => "Benin",
  "BM" => "Bermuda",
  "BT" => "Bhutan",
  "BO" => "Bolivia",
  "BA" => "Bosnia And Herzegowina",
  "BW" => "Botswana",
  "BV" => "Bouvet Island",);

など、すべての国で。私はすべての国が適切にリストされていることを100%肯定しています。

サーバーに保存されているファイルに結果を保存する申請書があります。現在、アプリケーションのレビューページは基本的なテキストバージョンであり、クライアントがアプリケーションをレビューするためのより視覚的に魅力的な方法を持つために、それをモックフォームに変換する過程にあります。

したがって、という名前の配列$in_dataは、ファイルからの結果を格納します。この配列はそのように構成されてい"emergency_medical_insurance" => "value_user_entered"ます。各キーは、それが形成されたHTML要素の名前であり、値はユーザーが入力したものです。

フォームの国選択リストは、国の2文字のコードを返します。だから私がやろうとしているのは$countries、の値で検索して$in_data['country_select']から国の名前を返すことです。

echo $in_data['country_select'];カナダと入力したテスト国の文字コード「CA」を返します。

echo $countries['CA'];'Canada'を返します

if (array_key_exists($in_data['country_select'], $countries)){ 
      echo "Country Found";
} 
else { echo "failed"; }

何も返しません。

if (array_key_exists('CA', $countries)){ 
      echo "Country Found";
} 
else { echo "failed"; }

また、何も返しません。そして、私が何も言わないとき、私は何も意味しません、nullでも、trueでも、falseでもありません。実行すらしません。

私の質問は簡単です。以下のコード(公式のPHPマニュアルから取得)は、私のコードとまったく同じように機能しますが、コードは何も返しませ

<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}
?>
4

2 に答える 2

6

ファイルから読み取っているので、他の文字を取得している可能性があります。trim()を試してください。

if (array_key_exists(trim($in_data['country_select']), $countries)){ 
      echo "Country Found";
} 
else { echo "failed"; }
于 2013-01-22T18:42:31.833 に答える
1

ファイルからの読み取り中にも同様の問題が発生しました。解決策は、最初の行からBOMを削除することでした。

function remove_utf8_bom($text) {
    $bom = pack('H*','EFBBBF');
    $text = preg_replace("/$bom/", '', $text);
    return $text;
}
于 2016-12-14T19:55:01.560 に答える