@wusudewama

Почему explode в php выдает неверный результат(разная длина строк в результирующем массиве)?

Доделываю сайт на modx - там есть особая конструкция, которая эмулирует if в шаблоне.
У меня не получилось заставить ее работать и я полез в код.
Внутри есть примерно следующая конструкция(упростил для понимания)
$opers = explode(":is:", "8:is:8");
return $opers[0] == $opers[1];


Проблема в том, что var_dump($oper) возвращает следующее:
array(2) {
  [0]=>
  string(14) "8"
  [1]=>
  string(1) "8"
}


и соответственно хоть оба элемента массива и равны 8, но сравнение показывает что это не так.

Почему после explode в результате получается разная длина строк(string(14) и string(1))? И как сделать правильно?
Спасибо!

UPD.
Проблема видимо проблема в разбиваемой переменной.
Подскажите, куда копать, это неверная кодировка или что?

var_dump($is);
string(20) "8:ieq:8"

var_dump(explode(":ieq:",$is));
array(2) {
  [0]=>
  string(14) "8"
  [1]=>
  string(1) "8"
}


Я вообще перестал что-либо понимать.
var_dump(bin2hex($is));
string(40) "5b2b6e6f6d696e6174696f6e2b5d3a6965713a38"
var_dump($is);
string(20) "8:ieq:8"

при этом сайт string-functions.com/hex-string.aspx расшифровывает строку как
[+nomination+]:ieq:8

В шаблоне я как-раз и делаю [[if? &is=`[+nomination+]:ieq:8` &then=` selected="selected"`]]

Как бинарное представление переменной может показывать одно, а echo другое?
  • Вопрос задан
  • 405 просмотров
Пригласить эксперта
Ответы на вопрос 1
@entermix
$opers = explode(":is:", "8:is:8");
var_dump($opers);

Результат:
10129358.jpg
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы