Вам не хватает перерыв; в для цикла !
Да, это может быть проблема кодирования, потому что функция strcasecmp () работаеттолько с Unicode.Многобайтовые символы, такие как UTF-8 или UTF-16, нельзя сравнивать с strcasecmp () .
Кроме того, strcasecmp () является функцией без учета регистра, поэтомуиспользование strtolower () против его параметров не меняет результат функции (строка «пример» такая же, как «ПРИМЕР» m «eXaMPlE», «ExamPlE» и т. д.).
Вы должныустановите значение результата по умолчанию (например, $res=false;
), чтобы убедиться, что результат установлен после цикла.
Вы должны заменить для цикла на foreach loop , как этотниже
$parameters = explode('|', $_COOKIE[Cisco_Rewards::REWARDS_SETTINGS_COOKIE_NAME]);
// this will handle result
$res = false;
foreach ($parameters as $value) {
$param = explode('=', $value);
if(count($parameter) > 1) {
// I guess this line is just for testing result
echo "param1=".trim($param[0])."; param2=".trim($name)."; Result=".strcasecmp(trim($param[0]), trim($name)) . "<br />\n";
if(strcasecmp(trim($param[0]), trim($name))) {
$res=$param[1];
// you should break here
break;
}
}
}
// try to output result before (testing purpose only)
var_dump($res);
return $res;
Но чтобы упростить это решение, вы можете использовать эту функцию
function getParamValue($parameters, $key) {
$res = false;
$plist = explode('|', $parameters);
foreach ($plist as $pair) {
$element = explode('=', $pair);
if (trim($element[0]) == trim($key)) {
$res = trim($element[1]);
break;
}
}
return $res;
}
Так что если у вас есть $parameters
строка типа "console=1|userid=8159"
и вы хотите найти значение для $key
string "userid"
, поместите его в эту функцию, и он вернет ваш результат или false , если $key
не был найден в списке $parameters
.
Пример
$parameters = "console=1|userid=8159";
$name = "userid";
echo getParamValue($parameters, $name);
Вывод
8159
Теперь вы можете написать свой код следующим образом
$parameters = explode('|', $_COOKIE[Cisco_Rewards::REWARDS_SETTINGS_COOKIE_NAME]);
$value = getParamValue($parameters, $name);
И $ value забирает ваш кодult или возвращает false , если $ name нет в списке $ parameters .