помогите с массивом - PullRequest
       2

помогите с массивом

0 голосов
/ 15 января 2010

Что я здесь не так делаю? Строка имени пользователя содержит менее 2 символов, но она по-прежнему не устанавливает ошибку []?

Регистрация:

$errors = array();

$username = "l";

    validate_username($username);

if (empty($errors)) {
   echo "nothing wrong here, inserting...";
}

if (!empty($errors)) {

    foreach ($errors as $cur_error)
        $errors[] = '<li class="warn"><span>'.$cur_error.'</span></li>';
}


function validate_username($username) {

$errors = array();

if (strlen($username) < 2)
    $errors[] = "Username too short";
else if (strlen($username) > 25)
    $errors[] = "Username too long";

return $errors;

}

Ответы [ 5 ]

2 голосов
/ 15 января 2010

Это потому, что вы не назначаете возвращаемое значение validate_username() для любой переменной.

Попробуйте

 $errors = validate_username($username);
1 голос
/ 15 января 2010

Изменить validate_username($username); на $errors = validate_username($username);

Ваша функция влияет на локальную переменную с именем errors, а не на глобальную errors, которую вы могли ожидать.

Далее, ваш код можно немного очистить следующим образом

$username = "l";
$errors   = validate_username($username);

// No errors
if ( empty($errors) ) {
   echo "nothing wrong here, inserting...";
}
// Errors are present
else {
    foreach ( $errors as $cur_error ) {
        $errors[] = '<li class="warn"><span>'.$cur_error.'</span></li>';
    }
}

function validate_username($username) {
    $errors = array();
    $len    = strlen($username);

    if ( $len < 2 ) {
        $errors[] = "Username too short";
    } elseif ( $len > 25 ) {
        $errors[] = "Username too long";
    }

    return $errors;
}
0 голосов
/ 15 января 2010
**//TRY THIS INSTEAD**

$errors = array();

$username = "l";

**$errors = validate_username($username);**

if (empty($errors)) {
   echo "nothing wrong here, inserting...";
}

if (!empty($errors)) {

    foreach ($errors as $cur_error)
        $errors[] = '<li class="warn"><span>'.$cur_error.'</span></li>';
}


function validate_username($username) {

$errors = array();

if (strlen($username) < 2)
    $errors[] = "Username too short";
else if (strlen($username) > 25)
    $errors[] = "Username too long";

return $errors;
}
0 голосов
/ 15 января 2010

Вы забыли назначить $errors

  $errors = validate_username($username);
0 голосов
/ 15 января 2010

вы не вернете это правильно, вам нужно:

$errors = validate_username($username)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...