2010-08-05 5 views
0

Привет, мне интересно, что я могу делать неправильно. У меня есть два условия, которые возвращают true или false. По той же причине он не работает. Буду признателен, если кто-то укажет, что я могу делать неправильно.PHP if statement?

<?php 
    $pagetype = strpos($currentPage, 'retail'); 
    if(isset($quoterequest) && $pagetype === True && $currentPage !== 'index.php'){ 
    echo "this is retail" ; 
    }elseif(isset($quoterequest) && $pagetype === False && $currentPage !== 'index.php'){ 
    echo "this is restaurant"; 
    }        
?> 

EDIT- Извините, что я его редактировал, но почему-то не появлялся. В основном сценарий выглядит в URLs для термина «розничной торговли», если он находит его, он должен вернуть «это в розницу», если не «это ресторан»

quoterequest это просто переменная, как так

$quoterequest = "washington" 

и текущая страница приводится в движение от

<?php $currentPage = basename($_SERVER['SCRIPT_NAME']); 

Просто, чтобы быть чистым. Url это структура, как так

www.example.com/retail-store.php www.example.com/store.php

+1

Что происходит и что вы хотите здесь совершить? Разве это не входит в предложение, которое вы ожидаете, или оно не входит ни в один из них? –

+0

Не могли бы мы получить некоторые образцы значений $ currentPage и $ quoterequest – Phliplip

+1

И он говорит, что это «розничная» или «это ресторан» - или нет? – Phliplip

ответ

6

$pageType не соответствует действительности. Если строка содержится, strpos возвращает целое число. Итак, тест для !== false.

<?php 
    $pagetype = strpos($currentPage, 'retail'); 
    if (isset($quoterequest) && $currentPage !== 'index.php') { 
     if ($pagetype !== false) { 
      echo "this is retail"; 
     } 
     else { 
      echo "this is restaurant"; 
     } 
    }      
?> 
1

На первый взгляд это должно быть $ PageType! == вернуть ложные
StrPos ложная или числовое значение на матче

цитата из php.net/strpos

Возвращает позицию в виде целого числа. Если игла не найдена, strpos() вернет логическое значение FALSE.

поэтому, чтобы проверить, не установлено ли значение, вы должны использовать if (strpos (...) === false) и проверить, не найден ли он, если (strpos (...)! == false)

1

Отсутствие смысла в дублировании условий каждый раз. Нижеприведенный код должен делать то, что вы хотите. (С учетом вышеупомянутых комментариев strpos).

$pagetype = strpos($currentPage, 'retail'); 
if($currentPage !== 'index.php' && isset($quoterequest)){ 
    if ($pagetype === false){ 
    echo "restaurant"; 
    }else{ 
    echo "retail"; 
    } 
} 
+1

dang Мне нужно набрать быстрее ... :) – Doon

0

PHP имеет ленивую оценку. Если первый член в выражении if оценивается как false, он перестает оценивать остальную часть кода. Если isset($quoterequest) оценивает значение false, ни одно другое из ваших утверждений не будет рассмотрено.

$> 
<?php 

function untrue() { 
     return FALSE; 
} 

function truth() { 
     echo "called " . __FUNCTION__ . "\n!"; 
     return TRUE; 
} 

if (untrue() && truth()){ 
     echo "Strict.\n"; 
} else { 
     echo "Lazy!\n"; 
} 

$> php test.php 
Lazy!