2014-02-09 18 views
5

Ich bin Anfänger in der PHP-Programmierung. Kann mir bitte jemand einen Trick vorschlagen? Wie könnte ich dieses Skript mit irgendeiner Zyklusfunktion verkürzen?Überprüfen Sie, ob alle Array-Elemente leer sind

$org[1] = $_POST['name']; 
$org[2] = $_POST['street']; 
$org[3] = $_POST['city']; 
$org[4] = $_POST['postal_code']; 
$org[5] = $_POST['org_nmr']; 
$org[6] = $_POST['tin']; 

if (
    (empty($org[1])) 
    && (empty($org[2])) 
    && (empty($org[3])) 
    && (empty($org[4])) 
    && (empty($org[5])) 
    && (empty($org[6])) 
) { 
    echo 'Not enter have no data'; 
} 

Ich denke, dass es möglich ist, es irgendwie zu machen. Aber ich weiß nicht wie.

+0

möglich Duplikat [Wie jeden Wert in einem Array zu überprüfen ist, leer?] (http://stackoverflow.com/questions/21203149/how-to-check-each-value-in-an-array-is-empty) – Gajus

+0

Ich frage mich, wie diese Frage fünf upvotes bekommen kann. Und nur du weißt es nicht, bedeutet nicht, dass du fragen musst. Erste Suche (das vorgeschlagene Duplikat ist nicht sehr gut gewählt, muss ich zugeben). – hakre

+0

PS> du solltest deine Zählung immer mit 0 NOT 1 beginnen ... außerdem solltest du es nicht so machen müssen, du solltest entsprechende Namen in deinem Array haben $ org ["name"] = _ $ POST [' Name '] usw. –

Antwort

2

Diese einfache Antwort ist auf die Beispielfrage des Benutzers zugeschnitten (Arrays, deren Werte Arrays/Objekte usw. sind, werden nicht berücksichtigt).

$data = trim(implode('',$org)); 
if (strlen($data) === 0){ 
... 
} 

Ich wechselte von empty ($ data) strlen ($ data) === 0 in, wenn die Bedingung für den Fall, dass die Null-Wert für Sie eine nicht leere Situation ist; weil, wie wir wissen, leer ($ data) wahr sein wird, wenn $ data = '0')

1

Sie können die Wiederholung mit einer Schleife vermeiden. Es könnte auch sinnvoller sein, das benannte assoziative Array als ein numerisch indiziertes Array für $org zu behalten.

$org = array(); 
foreach($_POST as $name => $value) { 
    If (! empty($value)) { 
    $org[$name] = $value; 
    } 
} 
If (empty($org)) { //... Error here 
1

Sie sollten, dass der Check, bevor Sie eine beliebige Taste im Array POST zuzugreifen.

Erforderlich gar keine Schleife ist, dass foreach zur Ausgabe von fehlenden Tasten nur verwendet, nicht um die Prüfung zu tun

<?php 
$required = array_flip(array('key_a', 'key_b')); // list of required keys, just used array_flip for ease of writing 
$post = array('key_a' => 'a value'); // your $_POST array 
$check = array_diff_key($required, $post); 
if(!empty($check)) { 
    // foreach not required as answer to your question, just to point missing keys out. 
    foreach($check as $key => $value) { 
     echo $key, 'key is missing!', PHP_EOL; 
    } 
    die('Some message'); 
} 
0
$values = array('name', 'street', 'city', 'postal_code', 'org_nmr', 'tin'); 
$getLength = function($val, $post_data){ 
    return is_null($post_data[$val]) ? 0 : strlen($post_data[$val]); 
}; 
if(array_sum(array_map($getLength, $values, $_POST)) == 0){ 
    echo 'Nezadal(a) jste žádné údaje'; 
} 

Grundsätzlich Sie eine Funktion erstellen, die die Länge eines Array-Element bestimmen und gib es Länge zurück.

Sie ordnen diese Funktion dann allen Elementen zu und summieren sie dann.

1

Sie array_filter integrierte Funktion verwenden können,

if(count(array_filter($_POST)) == 0) 
    echo 'Nezadal(a) jste žádné údaje'; 
+0

Funktioniert nicht für "0". – Gumbo

+0

versuche 'if (! Array_filter ($ _ POST))' stattdessen ... –

+0

Nein, ich meinte [''0'' wird fälschlicherweise betrachtet] (http://php.net/manual/en/language.types.boolean. php # language.types.boolean.casting), welches 'array_filter' herausfiltert, wenn keine Callback-Funktion übergeben wird, d. e., 'array_filter (array ('0')) === array()'. – Gumbo

0

überrascht niemand erwähnt in_array?

if (in_array("", (array) $org)) { 
    echo "something is empty in this array"; 
} 

A nehmen auf die Person oben, würde ich werfen vielleicht $ org:

$test = trim(implode('', (array) $org)); 
if (strlen($test) === 0){ 
    ... 
} 

Weitere Beispiele:

$arr0 = array('Hello', 'World!', 'Beautiful', 'Day!'); 
$arr1 = array("something" => 'here'); 
$arr2 = array("something" => ''); 
$arr3 = array(); 
$arr4 = "string"; 
$arr5 = 34; 
$arr6 = ''; 

$test = trim(implode('', (array)$arr0)); 
if (strlen($test) === 0) { 
    echo "No data in this array"; 
} else { 
    echo "Data in this array \n"; 
} 


$test = trim(implode('', (array)$arr1)); 
if (strlen($test) === 0) { 
    echo "No data in this array\n"; 
} else { 
    echo "Data in this array \n"; 
} 

$test = trim(implode('', (array)$arr2)); 
if (strlen($test) === 0) { 
    echo "No data in this array\n"; 
} else { 
    echo "Data in this array \n"; 
} 

$test = trim(implode('', (array)$arr3)); 
if (strlen($test) === 0) { 
    echo "No data in this array\n"; 
} else { 
    echo "Data in this array \n"; 
} 

$test = trim(implode('', (array)$arr4)); 
if (strlen($test) === 0) { 
    echo "No data in this array\n"; 
} else { 
    echo "Data in this array \n"; 
} 

$test = trim(implode('', (array)$arr5)); 
if (strlen($test) === 0) { 
    echo "No data in this array\n"; 
} else { 
    echo "Data in this array \n"; 
} 


$test = trim(implode('', (array)$arr6)); 
if (strlen($test) === 0) { 
    echo "No data in this array\n"; 
} else { 
    echo "Data in this array \n"; 
} 
Verwandte Themen