2 php arrays validation string-comparison psr-7
我尝试以不区分大小写的方式找到正确的方法来检查数组键是否存在。
我有一个数组 - 一个 HTTP 标头列表:
$headers = [
'User-Agent' => 'Mozilla',
];
Run Code Online (Sandbox Code Playgroud)
基本上,我希望能够给出这样的东西(带有小字符“u”):
$keyExists = array_key_exists('user-Agent', $headers);
Run Code Online (Sandbox Code Playgroud)
并true在应用 a 时接收布尔值var_dump:
var_dump($keyExists); // I need TRUE to be returned.
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助。
您可以使用array_change_key_case()将所有大小写转换为小写,并检查array_key_exists(). array_change_key_case()默认情况下将所有键更改为小写(但您也可以将它们更改为大写,方法是向CASE_UPPER第二个参数提供 -CASE_LOWER是默认值)。
这当然意味着您要查找的键必须是小写的,当您将它传递给array_key_exists(). 你通过一个变量,你可以使用strtolower()它来确保它是。
$headers = array(
'User-Agent' => 'Mozilla',
);
$headers = array_change_key_case($headers); // Convert all keys to lower
$keyExists = array_key_exists('user-agent', $headers);
var_dump($keyExists);
Run Code Online (Sandbox Code Playgroud)
值得注意的是,如果您有多个键在小写时变得相同(例如,如果您有Foo和foo作为原始数组中的键),则只保留数组中的最后一个值。正如手册中所读:“如果一个数组的索引在运行此函数时相同(例如“key”和“kEY”),则数组中后面的值将覆盖其他索引。 “