#php
#php
Вопрос:
Мне нужно выполнить 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’, имеет длину 35 при использовании функции strlen($logger_name)… Я не уверен, почему, и если есть какой-либо способ преобразовать это в правильную строку?
Комментарии:
1. Вы удалили пробелы, конечно, они будут не идентичны.
2. Я не уверен, в чем ваша проблема … ? Первая строка приводит к изменению $test на ‘Thisisatest’, поэтому очевидно, что это не равно ‘Это тест’ … ?
3. извините за путаницу, я рад, что поднял настроение вашему дню, хотя: p
4. Что
var_dump($logger_name);
говорит? Это должно бытьstring(13) "StackOverflow"
.5. На самом деле там написано string(35) «StackOverflow»:s
Ответ №1:
Я предполагаю, что ваш $header[‘fromaddress’] имеет значение, отличное от «Переполнения стека«, допустим, это «переполнение стека»
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. а как насчет массива заголовков?
2. Обновил мой ответ, не могли бы вы попробовать это сейчас?
3. Нет… вы можете видеть, где я показываю вывод, что echo $ logger_name является StackOverflow
Ответ №2:
Используйте это:
$text = "This is a test";
$array = explode(' ', $text);
$exists = array_key_exists($key, $array);
echo $exists;
Надеюсь, это поможет