2015-08-19 3 views
0

Я пытаюсь получить доступ к переменным PHP $error_message и $success_message вне функции check_fields. Это не работает. Я понимаю, что использование глобальных переменных не рекомендуется. Мне просто нужен способ вернуть переменные и логические true или false или получить их по всему миру.php не может получить доступ к глобальной переменной вне функции

function check_fields($pattern,$post,$minlength,$maxlength,$name_of_field) 
{ 
    global $error_message; 
    global $success_message; 
    $length_of_string = strlen($post); 
    if(isset($post)) 
    { 
     if(preg_match($pattern,$post)) 
     { 
      if($minlength < $length_of_string || $maxlength > $length_of_string) 
      { 
       return true; 
       $success_message .= $name_of_field . ' checked successfully...'; 
      }else 
       { 
       return false; 
       $error_message .= $name_of_field . ' must be less than ' . $maxlength . 'and greater than' . $minlength; 
       } 

     }else 
     { 
     return false; 
      $error_message .= $name_of_field . ' was not correct, please enter this information again <br />'; 
     } 

    }else 
    { 
     return false; 
     $error_message .= $name_of_field . ' was not set <br />'; 
    } 
} 
+0

«Вне функции» не всегда совпадает с глобальным охватом. Каждый функциональный вызов * layer * имеет свою собственную локальную область. Это зависит от того, что еще произошло до достижения вашей функции, и * где * вы пытаетесь получить доступ к этой общей переменной. – mario

+0

Что бы вы мне порекомендовали? – brocksprogramming

+0

возвращает объект или массив с ответом (boolean) и поле message (string) – CodeGodie

ответ

0

Возможно, вам придется создавать переменные вне вашей функции. (Поскольку вы не включаете этот код, я не могу сказать, если вы уже это сделали.)

Вы также должны поместить свое сообщение в эти поля, прежде чем «вернуть ложь». В коде, который вы опубликовали, большинство ваших заявлений о назначении сообщений недоступны.

$error_message = ''; 
$success_message = ''; 

function check_fields($pattern,$post,$minlength,$maxlength,$name_of_field) 
{ 
    global $error_message; 
    global $success_message; 
    $length_of_string = strlen($post); 
    if(isset($post)) 
    { 
     if(preg_match($pattern,$post)) 
     { 
      if($minlength <= $length_of_string) 
      { 
       //return true; 
       $success_message .= $name_of_field . ' checked successfully...'; 
       return true; 
      }else 
       { 
       //return false; 
       $error_message .= $name_of_field . ' must be less than ' . $maxlength . 'and greater than' . $minlength; 
       return false; 
       } 

     }else 
     { 
      //return false; 
      $error_message .= $name_of_field . ' was not correct, please enter this information again '; 
      return false; 
     } 

    }else 
    { 
     //return false; 
     $error_message .= $name_of_field . ' was not set'; 
     return false; 
    } 
} 
0

Все хорошие ответы и вы, ребята, великолепны, но тот, который представляется наиболее целесообразным осуществить до сих пор было только регулировать приоритет логического значения истинных ложных показаний. Я думаю, что код был как выход, прежде чем он смог записать сообщение об ошибке. Спасибо всем вам, но ответ, с которым я столкнулся, - Райан Винсент.

+0

Вы, ребята, спасли меня много времени. Приветствия stackoverflow! – brocksprogramming

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