这更像是一个警告而不是一个问题,但有人可能能够提供更好的解决方案。
我正在从我的 Android 应用程序发送自定义请求标头。当请求到达 PHP 服务器时,我检查此标头及其值是否存在。为此,我使用 获取标头数组,apache_request_headers()
然后使用 . 检查标头array_key_exists()
。
但是,array_key_exists('custom-header', $Hdr)
将返回false!所以我用 print_r 转储了数组,你瞧,数组键确实存在于数组中。这是输出:
Array
(
[Accept-Encoding] => gzip
[Connection] => Keep-Alive
[Content-Type] => application/x-www-form-urlencoded
[Content-Length] => 103
[Host] => www.somedomain.com
[custom-header] => my-custom-header-value
)
我是如何解决这个问题的?
像这样克隆数组:
// recuperate the request headers
$Hdr = apache_request_headers();
// clone the array as it will not correctly search with array_key_exists
$Keys = array_keys($Hdr);
$Values = array_values($Hdr);
$Headers = array();
for($i = 0; $i < count($Keys); $i++)
{
$Headers[$Keys[$i]] = $Values[$i];
}
现在,当我使用 查询新数组时array_key_exists('custom-header', $Headers)
,它返回 true !
这是一个已知问题吗?
有更好的解决方案吗?
注意:我已经更改了实际值的名称以保护我的代码,这里作为示例给出 - 请不要发布对这些值的更正:-)
编辑:这发生在我在 Apache 版本 2.2.22 上运行 PHP 版本 5.3.10 的共享服务器上