Array bereinigen

BastianW

Mitglied
Hallo zusammen,

ich habe hier ein Array:

HTML:
Array
(
    [0] => [Config]

    [1] => 

    [2] => ;--------------------------------------------------------------------------

    [3] => ;Kommentar

    [4] => Eintrag345234=fghfdghfg

    [5] => Eintrag345sdfsda234=sdfwaer

    [6] => Eintrag345sdfsdf234=Sadfasdf

    [7] => Eintrag345234=asdfsdf

    [8] => 
}

Da würde ich gerne die Leeren Einträge rausschmeissen. Und auch die Kommentare. Doch ich bekomme es einfach nicht hin. Mein Ansatz war:

Code:
               for ($i=1 ; $i<=count($werte);$i++)
               {
               // kill leere einträge
                        if ($werte[$i]== "")
                        {
                        unset ( $werte[$i] );
                        }
                }

Doch da löscht er mir einfach diese Leeren Elemente nicht raus :-(. Jemand eine Idee für eine Lösung?
 
Probier mal Folgendes:
PHP:
array_filter($array, create_function('$val', 'return !preg_match(\'/^\\s*(?:$|;)/\', $val);'))
 
Hast Du mal geprüft, ob die Werte wirklich leer sind?

Was wird ausgegeben, wenn Du diesen Code nimmst?

PHP:
               for ($i=1 ; $i<=count($werte);$i++)
               {
               echo strlen();
               // kill leere einträge
                        if ($werte[$i]== "")
                        {
                        echo $i;
                        unset ( $werte[$i] );
                        }
                }

Warum fängst Du bei 1 an zu zählen? Nimm lieber foreach um ein array durchzuhangeln.
 
1.) preg_match

preg_match würde ich aufgrund der Performance ungerne nehmen... Das script braucht so schon einiges an Zeit. Wenn ich da noch mit preg_match arbeite wirds sicherlich spürbar langsam. Würde da lieber einen anderen Weg nehmen wollen

2.) Leer order nicht
Naja... für mich sehen die leer aus... ich lese eine configurations ini ein... daher kann es sein das es nicht lehr ist, sondern da ein Absatz drinn ist. Aber ein == "\n" als abfrage löscht das Array Element leider auch nicht.

3.) Anfang bei 1 anstelle von 0
Ich brauche den [config] Teil im Array nicht, den habe ich mit Unset schon rausgeschmissen und fange daher dann schon bei 1 anstelle 0 an.
 
Zuletzt bearbeitet:
Hi,

Du kannst auch ohne regulären Ausdruck filtern:
PHP:
$array = array_filter($array, create_function('$val', 'return trim($val) != "" && substr(trim($val), 0, 1) != ";";'));

LG
 
PHP:
<?php

$array = array('a', 'b', '', '', 'e');

$array = array_filter($array);

print_r($array);

?>
Code:
Array
(
    [0] => a
    [1] => b
    [4] => e
)

ist das nicht genau das gewünschte Ergebnis?
Und mit Callback meinte ich die komplette zweite Funktion.
 
HTML:
$array = array_filter($array, create_function('$val', 'return trim($val) != "" && substr(trim($val), 0, 1) != ";";'));

klappt... wenn ich auch nicht verstehe was er da tut... Kannst du mir das kurz erklären?

Code:
$array = array_filter($array);

tut es allerdings nicht. Das array sieht genauso aus.
 
Zurück