2016-03-26 17 views
0

Dizimde bulunan tüm öğelerin bir eylemi işlemek için boş dizeler olduğundan emin olmalıyım. Şu anda bunu yapıyorum, bir öğe her boş bir dize olduğunda bir değişkeni arttırmaktır. Sonra, bu değişkenin değerini belirli bir gereksinim N'ye karşı kontrol ederim. Eğer N yerine getirilirse, eylem işlenir. Aşağıda boş dizeleri denetleyen kodun pasajı verilmiştir. Bunu yapmanın en iyi yolu olup olmadığından emin değilim ve bunu yapmak için daha iyi bir yolun olması gerektiğini düşünüyorum çünkü temelde bu değeri N kodlayan biriyim. Başka bir yaklaşım önerebilir mi?PHP dizi öğeleri doğrudur

function checkErrorArray($ers) { 
    $err_count = 0; 
    foreach ($ers as &$value) { 
     if ($value == '') { 
      $err_count++; 
     } 
    } 
    return $err_count; 
} 
+0

Zaten çalıştığını söylediğin gibi, tek şey şu şekilde farklı yazabilmenizdir: 'return array_count_values ​​($ ers) [" "];' – Rizier123

cevap

3

Neden yapmıyoruz: Bu boş olmayan bir değer bulunursa tüm dizi boyunca koşmak zorunda olmayacak

function areAllEmpty($ers) { 
    foreach ($ers as &$value) { 
     //if a value is not empty, we return false and no need to continue iterating thru the array 
     if (!empty($value)) return false; 
    } 
    //if got so far, then all must be empty 
    return true; 
} 

. Bu yardımcı olur

function areAllEmpty($ers) { 
     $errs_str = implode('', $ers);//join all items into 1 string 
     return empty($errs_str); 
    } 

Hope:

Ayrıca daha kısa bir halini yapabilirdi.

2

Sadece filtre ve boşsa o false dönecektir boş değilse o zaman !true döndürür:

return !array_filter($ers); 

Yoksa aslında o boş elemanların sayısını gerekirse:

return count(array_diff($ers, array_filter($ers)));