2016-11-20 3 views
1

Ich habe Array, wo ist viel leeres Feld. Wie kann ich die ausgefüllten Felder entfernen und ein neues Array mit den leeren Feldern erstellen? So , Beispiel:Wählen Sie Schlüssel, wo der Wert leer ist/array/php

[0] => Array 
     (
      [id] => 26 
      [user_type] => 2 
      [user_name] => Julian 
      [password] => b941da1629f4742de62796d51730edbb 
      [fpassword] => 1 
      [email] => [email protected] 
      [name] => 
      [surname] => 
      [birthday] => 0000-00-00 
      [country] => 
      [city] => 
      [adress] => 
      [post_code] => 
      [mob_number] => 77077412 
      [tel_number] => 0 
      [web_page] => 
      [registration_date] => 2016-11-19 05:03:05 
      [active] => 1 
      [activation_code] => 714779 
      [last_login] => 2016-11-20 12:06:36 
     ) 

Deshalb möchte ich dies:

[0] => Array 
     (
      [name] => 
      [surname] => 
      [birthday] => 0000-00-00 
      [country] => 
      [city] => 
      [adress] => 
      [post_code] => 
      [tel_number] => 0 
      [web_page] => 

     ) 

ich müde array_diff($data, array(''));, aber nichts happend.Thx

Antwort

0

Sie etwas tun können, in $a1 - nur Regeln halten, die Sie in neuen Array sehen Werte wollen.

$a1 = array('empty' => '', 'another_rule' => '0000-00-00'); 
$a2 = array(
      'id' => 26, 
      'user_type' => 2, 
      'name' => '', 
      'birthday' => '0000-00-00', 
     ); 
$result = array_intersect($a2, $a1); 
+0

Funktioniert! Vielen Dank! –

3

Sie benötigen eine array_filter "rückwärts", wie:

$empty = array_filter($data, function($item) { 
    return empty($item); 
}); 

Aber es muss für verschiedene Werte abgestimmt werden, z Beispiel Datum ist nicht "falsy" so wird es nicht von empty gefangen werden. Die Regel ist, dass Sie für alle Werte, die Sie als "leer" betrachten, den Wert "True" von array_filter abrufen müssen.

Der Code, den Sie in diesem Beispiel benötigt werden:

$data = [ 
    'int' => 100, 
    'str' => 'val', 
    'empty' => '', 
    'null' => null, 
    'date' => '0000-00-00', 
]; 
$empty = array_filter($data, function($item) { 
    return empty($item) || '0000-00-00' === $item; 
}); 
Verwandte Themen