Bir foreach yineleme sayısını almak için nasıl

4 Cevap

Bunu yapmanın daha iyi bir yolu olabilir ve ben kesinlikle Önerilere açığım olabilir.

Birden yüklenenler idare edecek bir dosya yükleme komut dosyası var. Ne yapmak istiyorum döngü başarıyla taşındı ve bu sayı yüklenen dosyaların toplam sayısı eşitse, o dosyalar alındı ​​kullanıcıya göstermek için bir istisna kullanmak her dosya için yapar yineleme sayısını olduğunu.

Ben oradan saymak sonra döngü içinde artırmak olacağını düşündüm ama ne ben alıyorum, yanlış bir toplam sonuçlanır yüklenen her dosya için bir dizidir. Bunu yapmak ya da başarılı her yineleme saymak için daha iyi bir yolu var mı?

Bu benim ile çalışmak zorunda yapıdır

    foreach($files as $file)
    {
        if ($file['error'] == UPLOAD_ERR_OK)
        {
            move_uploaded_file($file['tmp_name'], $filename);
        }
        else
        {
           //error
        }
    }

4 Cevap

Hemen hemen bir sayaç ile bunu yapmak zorunda.

$success = 0;
foreach($_FILES as $file) {

    if(is_uploaded_file($file['tmp_name'])) {
        move_uploaded_file($file['tmp_name'], $destination);
        $success += 1;
    }
}

if($success != count($_FILES)) {
    //error message / exception
}

Düzenle - Sen hata işleme bir hata bayrağı veya bayrakları ayarlayabilirsiniz ... ama delicesine iyi olduğunu bunu yapmak için bir yol gerçekten orada değil.

foreach($files as $file)
{
    if ($file['error'] == UPLOAD_ERR_OK)
    {
        move_uploaded_file($file['tmp_name'], $filename);
    }
    else
    {
       //error
       $upload_errors += 1;
       //or, to get a little more info...
       //$upload_errors[] = $file
    }
}

if( $upload_errors == 0) { //or count($upload_errors) == 0
    // tell the user that the upload failed.
}

Eğer dosya sayısını bilmek beri hemen hemen döngüsü için ne kadar ama orada kullanarak bu dışarı atma. İki sayaçları döngü için bir ve başarıları için bir, ve komut çoğunlukla başarısız olur (ve bunu her şeyi çalıştı olduğunu ne kadar sıradışı değil istiyorum) sürece her şey çalışıyor, bir özel atmayın ile.

Burada can yüklenen dosyaların sayısını saymak için count ($ _FILES) kullanabilirsiniz görebilirsiniz. Sen, bu correctly yüklenen dosyalar sayısı değildir.

<?php
if (isset($_FILES) && !empty($_FILES)) {
    echo count($_FILES).' files were uploaded<br>';
    ?><pre><?php
    print_r($_FILES);
    ?></pre><?php

}
?>
<form 
    action="<?php echo $_SERVER['PHP_SELF'];?>" 
    method="post"
    enctype="multipart/form-data"
>
    File 1<input type="file" name="file1"><br>
    File 2<input type="file" name="file2"><br>
    File 3<input type="file" name="file3"><br>
    <input type="submit" value="upload">
</form>

foreach ($array as &$item)

Sadece yapabilirsiniz count($array)