diziler ve foreach

5 Cevap

Herhangi bir fikir neden bu alışkanlık hatalarını yazdırmak?

// Validate the email
if (preg_match($regex, $email))  
        $errors[] = "Invalid email address";

    // ... and the password
    if (strlen($password) < 4)
        $errors[] = "Password is too short";

    // No errors?   
    if (empty($errors))
    {
        // insert into db

    }

// If there were any errors, show them
if (!empty($errors))
{
    $errors = array();
    foreach ($errors as $error)
    echo '<li>'.$error.'</li>';
}

5 Cevap

Eğer çıkıştan önce dizi üzerine yazıyorsunuz.

 $errors = array();  // Creates an empty array
 foreach ($errors as $error)  // Won't do anything

$errors = array() kaldırmak ve çalışması gerekir.

Bu $errors = array() senaryonun çok başında başlatmak ve ardından count($errors) > 0 yerine kontrol etmek için arada temiz olmak empty olacaktır:

// No errors?   
if (count($errors) == 0)
{
 // insert into db

}

// If there were any errors, show them
else
{
    $errors = array();
    foreach ($errors as $error)
    echo '<li>'.$error.'</li>';
}

Bu şekilde, $error getirilmedim ilgili bildirimleri önlemek olacaktır.

... Sen, sadece kendi içeriğini görüntülemek için denemeden önce dizi boşaltıyorlar çünkü aşağıya bakın

// If there were any errors, show them
if (!empty($errors))
{
    $errors = array();              // This line is emptying the array!
    foreach ($errors as $error)
    echo '<li>'.$error.'</li>';
}

Bu çizgi dizi mendil Çünkü:

$errors = array();

Bu kod bölümünü kullanıyor:

if (!empty($errors))
{
    $errors = array();    // Here, you are making the $errors array empty !
    foreach ($errors as $error)
    echo '<li>'.$error.'</li>';
}

Temelde: - bunu boş bir dizi veriyoruz gibi, yani foreach tüm döngü olmaz sizinle foreach üzerinde yineleme için denemeden önce dizi boşaltıyorlar.

Eğer ilk satırda eğer son if deyimi $errors değerini üzerine yazıyorsanız Çünkü.