2016-03-26 16 views
0

Ich muss sicherstellen, dass alle Elemente in meinem Array leere Zeichenfolgen sind, um eine Aktion zu verarbeiten. Die Art, wie ich es gerade mache, inkrementiert eine Variable jedes Mal, wenn ein Element eine leere Zeichenfolge ist. Dann überprüfe ich den Wert dieser Variablen gegen eine bestimmte Anforderung N. Wenn N erfüllt ist, wird die Aktion verarbeitet. Im Folgenden finden Sie das Codefragment, das nach leeren Zeichenfolgen sucht. Ich bin mir nicht sicher, ob dies der beste Weg ist, dies zu tun und denke, dass es einen besseren Weg dafür geben muss, weil ich den Wert N im Grunde hart bin. Kann sonst noch jemand einen anderen Ansatz vorschlagen?PHP überprüfen Array-Elemente sind alle leer

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

Nun, wie Sie bereits sagen, es funktioniert, das einzige Ding ist, dass Sie es anders als nur schreiben könnten: 'return array_count_values ​​($ ers) [" "];' – Rizier123

Antwort

3

Warum gehst du nicht tun:

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; 
} 

Es wird nicht durch das gesamte Array ausgeführt werden soll, wenn ein nicht-leerer Wert gefunden wird.

Sie können auch eine kürzere Version tun:

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

Hoffnung, das hilft.

2

einfach filtern, und wenn es leer ist, dann ! wird true zurück, wenn es nicht false leer zurückkehren wird:

return !array_filter($ers); 

oder wenn Sie tatsächlich die Anzahl der leeren Elemente dann:

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