Есть в коде переменная $startid? которая по моему предположению должна равнятся 65 (это Id строки из базы данных) Однако при обращении к БД ничего не возвращается. Решил поковырять вывел и сравнил содержимое $startid: Код (Text): $output="<!--startid=$startid-->"; ($startid=='65')?( $output.="<!--startid=65-->"):( $output.="<!--startid!=65-->"); ($startid==='65')?( $output.="<!--startid==65-->"):( $output.="<!--startid!==65-->"); Получил на выходе: Код (Text): <!--startid=65--> <!--startid!=65--> <!--startid!==65--> Решив что проблема в разных типах данных перед сравнением сделал intval($startid); Не помогло.... то есть переменная содержит 65, но не равные 65.... Как еще можно проверить, что именно содержит переменная?
Брр. не понятен вопрос абсолютно. PHP: <?php $startid = 65; echo 'simple 65 - '; if ($startid == 65) { echo 'YES'; } else { echo 'NO'; } echo '<br>'; echo 'strict 65 - '; if ($startid === 65) { echo 'YES'; } else { echo 'NO'; } echo '<br>'; echo 'simple string 65 - '; if ($startid == '65') { echo 'YES'; } else { echo 'NO'; } echo '<br>'; echo 'strict string 65 - '; if ($startid === '65') { echo 'YES'; } else { echo 'NO'; } Код (Text): simple 65 - YES strict 65 - YES simple string 65 - YES strict string 65 - NO
признаюсь: замучавшись сэтой проблемой перестал говорить на понятном языке. поясню. $startid я получаю от cms, и дальше начинаются танцы с бубном. если просто echo $startid, то выводит 65. а если сравнивать ее с 65 (в любых вариациях) сравнение выдает false. вот я и интересуюсь, как еще можно узнать, что же содержит эта переменная. щас попробую ее в hex перевести, ради интереса....
Вот тока давай без обвинений! У меня проблема которую я решить не могу. Я привел участок кода и его вывод. Если тебе кажется, что мне нечем больше занятся, кроме как составлять фейковые выводы - добро пожаловать в л.с. дам тебе доступ в админку тестового сайта и к выводу скрипта. Значит так. Вот код пхп: PHP: intval($startid); $output="<!--startid=$startid-->"; (65==$startid)?( $output.="<!--startid=65-->"):( $output.="<!--startid!=65-->"); ($startid===65)?( $output.="<!--startid==65-->"):( $output.="<!--startid!==65-->"); var_dump($startid); return $output; Вот вывод который он дает: HTML: string(6) "65" <!--startid=65--> <!--startid!=65--> <!--startid!==65--> Непонятно для меня почему после intval($startid); var_dump говорит что она string... Причем если в операциях сравнения закавычить "65" ничего не менятся...
потому что вообще-то присваивать надо $startid = intval($startid); Это раз. А два, твой код у меня работает даже в таком виде. PHP: <?php $startid ='65'; intval($startid); $output="<!--startid=$startid-->"; (65==$startid)?( $output.="<!--startid=65-->"):( $output.="<!--startid!=65-->"); ($startid===65)?( $output.="<!--startid==65-->"):( $output.="<!--startid!==65-->"); var_dump($startid); var_dump($output);
Если я напишу Код (Text): $startid ='65'; То все работает. Но проблема в том что эту переменную я получаю от КМС! И var_dump отличается! от CMS я получаю: string(6) "65"; А если создать самому: string(2) "65"; Я так понял цифра в скобках отвечает за длину строки. Как увидеть лишние 4 символа?? Кстати если сделать $startid=intval($startid); То var_dump выдает: int(0) Разобрался. Проблема с CMS. Сделал так Код (Text): $ord=''; for ($i=0; $i < strlen($startid); $i++) { $ord .= ' '.ord($startid[$i]); } $output.="<!--".$ord."-->"; И получилось, что кмс не обрабатывая шаблонный тег (который при обработке должен был заменится на 65) засунула его в переменную. При выводе проверки КМС исправно заменяла тег на 65 и сводила меня с ума... То есть мой скрипт(как часть кмс) выдавал Код (Text): string(6) "[*id*]" а кмс обрабатывая эту строку выдавал мне в браузер Код (Text): string(6) "65"