Seite wählen

PHP Arrays filtern, Improved

von | Jul 24, 2014 | Development

Jeder der schonmal mit PHP in Berührung kam kennt vermutlich array_filter. Dieses kleine Schmuckstück ist manchmal ganz praktisch, kann jedoch nicht mit assoziativen Arrays umgehen. Die PHP SPL bietet jedoch seit Version 5.1 eine nette Alternative: Den FilterIterator

Diese Iterator-Klasse ist abstrakt und muss erst für die eigenen Zwecke näher spezifiziert werden bevor man sie nutzen kann.

callback = $callback;
        parent::__construct($iterator);
    }
    public function accept()
    {
        return call_user_func($this->callback, $this->key(), $this->current());
    }
}
$arrayToFilter = array(
    'key1' => 1,
    'key2' => 2,
    'key3' => 4
);
$filterIterator = new FilterIteratorWithCallback(
    new \ArrayIterator($arrayToFilter),
    function ($key, $value) { return substr($key, 3) == $value; }
);
foreach ($filterIterator as $key => $value) {
    echo $key . PHP_EOL;
}

Seit Version 5.4 bietet PHP auch die Klasse CallbackFilterIterator an, mit der sich obiger Code noch weiter verkürzen lässt:

 1,
    'key2' => 2,
    'key3' => 4
);
$filterIterator = new \CallbackFilterIterator(
    new \ArrayIterator($arrayToFilter),
    function ($value, $key, $iterator) { return substr($key, 3) == $value; }
);
foreach ($filterIterator as $key => $value) {
    echo $key . PHP_EOL;
}
Johannes Meyer
Johannes Meyer
Lead Developer

Johannes ist seit 2011 bei uns und inzwischen, seit er 2014 die Ausbildung abgeschlossen hat, als Lead Developer für Icinga Web 2, Icinga DB Web sowie alle möglichen anderen Module und Bibliotheken im Web Bereich zuständig. Arbeitet er gerade mal nicht, macht er es sich bei schlechtem Wetter am liebsten zum zocken oder Filme/Serien schauen auf dem Sofa gemütlich. Passt das Wetter, geht's auch mal auf eines seiner Zweiräder. Motorisiert oder nicht.

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema Development

Mein PHP-Trainingsprojekt

PHP Schulung Vor kurzem haben wir begonnen, eine neue Programmiersprache zu lernen – PHP. In der ersten Woche haben wir mit den Grundlagen wie Variablen, Arrays, Schleifen begonnen und uns schrittweise zu komplizierterer Syntax wie Funktionen, Objekten und Klassen...

check_prometheus ist jetzt öffentlich verfügbar!

Monitoring ist komplex, das wissen wir hier bei NETWAYS leider zu gut. Deswegen laufen in der Infrastruktur auch mal gerne mehrere Tools für die Überwachung. Zwei gern gesehene Kandidaten sind dabei Icinga und Prometheus. Icinga und Prometheus erfüllen...