我需要使用修改后的字符串执行array_key_exists,但是,之前我遇到了一个小问题。
以下说明:
$loggers = array('StackOverflow' => 'Stack Overflow');
$logger_name = str_replace(' ', '', $header['fromaddress']); //Remove space
echo $logger_name;
echo $loggers[$logger_name];
echo $loggers['StackOverflow'] . '<br/>';
以下是输出:
StackOverflow //echo $logger_name
Notice: Undefined index: StackOverflow in C:\... on line x //looks like not found using $logger_name
Stack Overflow //I can find it directly
更多编辑:
看起来问题是第一个输出,即使它说'StackOverflow'它在使用函数strlen($ logger_name)时长度为35 ......我不知道为什么,如果有任何方法将其转换为正确的字符串?
答案 0 :(得分:2)
我假设您的$ header ['fromaddress']具有除“ Stack Overflow ”之外的值,可以说它是“堆栈溢出”
str_replace('','',$ header ['fromaddress']);
会将此转换为“stackoverflow”。
并且这不会为您提供输出,因为PHP中的数组键区分大小写。
echo $loggers[$logger_name]; // $loggers['stackoverflow']
echo $loggers['StackOverflow'];
这是更新的代码和输出......
$loggers = array('StackOverflow' => 'Stack Overflow');
$logger_name = str_replace(' ', '', 'Stack Overflow'); //Remove space
echo $logger_name. '<br/>';
echo $loggers[$logger_name]. '<br/>';
echo $loggers['StackOverflow'] . '<br/>';
输出: -
StackOverflow
Stack Overflow
Stack Overflow
答案 1 :(得分:0)
使用此:
$text = "This is a test";
$array = explode(' ', $text);
$exists = array_key_exists($key, $array);
echo $exists;
希望有所帮助