【发布时间】:2013-01-06 02:17:06
【问题描述】:
我有一个世界上所有国家的数组:
$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 元素的名称,值是用户输入的内容。
表单上的国家选择列表返回国家的两个字母代码。所以我要做的是搜索$countries 的值为$in_data['country_select'],然后返回国家名称。
echo $in_data['country_select']; 返回“CA”加拿大和我输入的测试国家的字母代码。
echo $countries['CA']; 返回“加拿大”
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"; }
也不返回任何内容。而当我什么都不说时,我的意思是什么,不是空的,不是真的,不是假的;就是不运行。
我的问题很简单;下面的代码(取自官方 PHP 手册)与我的代码所做的完全一样,工作起来如何,但我的代码甚至不会返回 任何东西?
<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
echo "The 'first' element is in the array";
}
?>
【问题讨论】:
-
改为
var_dump($in_data['country_select']);,这样您就可以确保该值确实是一个 2 字符长度的字符串,它可能有一个前导/尾随空格。 -
执行
var_dump($countries)、echo $countries[$in_data['country_select']]以及@crypticツ 在if之前的建议,并告诉我们他们说什么。此外,虚拟的东西,但可以肯定的是,PHP 手册中的代码在您的网站上工作得很好,对吧? -
你的例子对我来说很好..如果数组键存在 CA 国家,回显 Country Found
-
您使用的是 PHP 4.0.7 或更高版本吗?在这种情况下,您也可以使用 isset()。
标签: php html arrays forms array-key-exists