2013-05-21 4 views
0

Я создаю белый список, если вы хотите, чтобы пользователь вводил данные. Я зацикливаюсь на утверждениях elseif.Проблема с if/elseif/else

Это мой код:

public function is_valid_data($data) 
    { 

    if(strlen($data > 9)) 
    { 
     $this -> set_message('is_valid_data', 'Field needs to be less than 9 characters'); 
     return FALSE; 
    } 
    elseif(strlen($data < 9)) 
    { 
     $this -> set_message('is_valid_data', 'Field can not be under 9 characters'); 
     return FALSE; 
    } 
    elseif((substr($str, 0, 1) !== 'testing') || (substr($str, 0, 1) !== 'test')) 
    { 
     $this -> set_message('is_valid_data', 'Please re-submit data!'); 
     return FALSE; 
    } 
    elseif(!preg_match("/^[0-9]/", $str)) 
    { 
     $this -> set_message('is_valid_data', 'Please dont forget about the numbers!'); 
     return FALSE; 
    } 
    else 
    { 
     return TRUE; 
    } 

    } 

По какой-то причине, даже если $ данных являются 9 символов первыми, если заявления проходят, то второй один терпит неудачу, и я получаю «Поле не может быть менее 9 символов ', хотя $ data составляет ровно 9 символов. Я возвращаю false, потому что в другом скрипте у меня есть вызов функции is_valid_data ($ data), и если эта функция возвращает false, то она вернет ошибку пользователю. Если он возвращает true, то данные действительны, и мы можем продолжить

Я не могу пошатнуть эту проблему.

+1

Вы хотите сравнить результат 'strlen ($ data)' с 9, у вас есть сравнение внутри вызова функции прямо сейчас: 'strlen ($ data)> 9' - это не то же самое, что' strlen ($ данные <9) '- см. разницу? –

+0

Yea ... Я noob Я даже не заметил вопроса :(Спасибо. – user2406611

ответ

3
if(strlen($data) > 9) 

вместо

if(strlen($data > 9)) 
+0

Я бы принял этот ответ, но я не могу. Это такая глупая ошибка. Большое спасибо! – user2406611

+0

И я могу " т вы тоже проголосовали. Но это работало – user2406611

0

Когда вы используете $data < 9, это означает, что оно должно быть меньше 9, если вы хотите, чтобы оно разрешало 9, тогда вам понадобится <= меньше или равно.

0

Я думаю, что вы проверяете условия неправильно. Что вам нужно заменить

if(strlen($data > 9)) 

с

if(strlen($data) > 9) 

То же syntctical проблема также присутствует во втором if заявлении. То, что вы можете захотеть, чтобы заменить

elseif(strlen($data < 9)) 

по

elseif(strlen($data) < 9) 
0

Есть несколько вещей неправильно с этим кодом, что составляет $ Обл является этим членом класса является его глобальным я должен знать эти вещи, чтобы помочь. Спасибо

+0

или ответ ниже :) или мой пример с приведенными ниже исправлениями http://pastebin.com/zJbQGzUP – BigDave

Смежные вопросы