Alex: array_filter als SELECT-Ersatz

Beitrag lesen

Hallo Leute,

ich möchte gerne in PHP Daten aus einem größeren Array filtern, ähnlich wie SQL's "SELECT x FROM y WHERE z". Die Daten sind folgendermaßen organisiert:

$a = array(
  array("category"  => "foo", ...),
  array("category"  => "bar", ...),
  array("category"  => "foo", ...),
  ...
);

array_filter sieht recht vielversprechend aus, wenn ich z.B. nur nach einer einzelnen Kategorie filtern möchte:

function filterCategory ($a, $category) {
  return array_filter($a, create_function('$data',
    "return $data['category'] == '$category';"
  ));
}

Probleme krieg ich allerdings, wenn $category eine Liste sein soll, die mehrere erlaubte Kategorien enthält (als Array). Ich müßte für die Callbackfunktion entweder dieses Array in einen String zerlegen, der die Einzelbedingungen ODER-verknüpft oder das Array irgendwie anders serialisieren.

Ich kann die ganze Funktion natürlich auch ohne array_filter realisieren, indem ich einfach von Hand alle Arrayelemente aussortiere. Kein Problem! Mich würde aber generell interessieren, wie/ob man array_filter für solch komplizierte Fälle benutzen kann.

Viele Grüße,

Alex