Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组_key_存在不起作用;数组不是多维的_Php_Html_Arrays_Forms_Array Key Exists - Fatal编程技术网

PHP数组_key_存在不起作用;数组不是多维的

PHP数组_key_存在不起作用;数组不是多维的,php,html,arrays,forms,array-key-exists,Php,Html,Arrays,Forms,Array Key Exists,我有一系列世界上所有的国家: $countries = array( "GB" => "United Kingdom", "US" => "United States", "AF" => "Afghanistan", "AL" => "Albania", "DZ" => "Algeria", "AS" => "American Samoa", "AD" => "Andorra", "AO" => "Angola",

我有一系列世界上所有的国家:

$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",);
所有国家都是如此;我百分之百地肯定每个国家都被正确列出

我有一个申请表,它将结果存储在服务器上的一个文件中。目前,该应用程序的审查页面是一个基本的文本版本,我现在正在将其转化为一个模拟表单,以便我的客户有一个更具视觉吸引力的审查应用程序的方法

因此,名为
$in_data
的数组存储来自该文件的结果。此数组的结构如下所示:
“紧急医疗保险”=>“用户输入的值”
。每个键是它形成的HTML元素的名称,值是用户输入的值

表单上的国家/地区选择列表返回国家/地区的两个字母代码。因此,我要做的是搜索
$countries
,搜索值为
$in_data['country_select']
,然后返回国家的名称

echo$in_数据['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"; }
也不返回任何内容。当我什么都不说的时候,我什么都不是,不是空的,不是真的,不是假的;甚至都不跑

我的问题很简单;下面的代码(摘自官方PHP手册)与我的代码完全相同,工作正常,但我的代码甚至不会返回任何东西,它是如何工作的


由于您正在读取文件,因此可能会获得其他字符,请尝试trim():


我在读取文件时遇到了类似的问题。 解决方案是从第一行删除BOM表

function remove_utf8_bom($text) {
    $bom = pack('H*','EFBBBF');
    $text = preg_replace("/$bom/", '', $text);
    return $text;
}

do
var_dump($in_data['country_select'])
相反,为了确保该值确实是一个2字符长的字符串,它可能有一个前导/尾随空格。do
var\u dump($countries)
echo$countries[$in_data['country\u select']]
以及@crypticツ 如果您有,请在
之前提出建议,并告诉我们他们说了什么。另外,这是一件很愚蠢的事情,但可以肯定的是,PHP手册中的代码在您的站点上运行得很好,对吗?您的示例对我来说运行得很好。。如果数组键存在于CA国家/地区,则回声国家/地区是否使用PHP4.0.7或更高版本?在这种情况下,您也可以使用isset()。这修复了它,谢谢Adam;不知怎的,在这些字母出现之前,有一个空间出现了。。从文件中读取行时。。您可能得到的是CA\n而不仅仅是CAA在查看了我自己创建文件的代码之后,似乎就是这样。
if (array_key_exists(trim($in_data['country_select']), $countries)){ 
      echo "Country Found";
} 
else { echo "failed"; }
function remove_utf8_bom($text) {
    $bom = pack('H*','EFBBBF');
    $text = preg_replace("/$bom/", '', $text);
    return $text;
}