PHP: Ein mehrdimensionales Array über eine anonyme Funktion filtern

Möchte man ein Array nach bestimmten Kriterien filtern, dann kann man dafür Schleifen verwenden. Eine elegante Alternative zeigt dieses Beispiel:

Code:

$aUnfiltered[] = array('value' => 102, 'id' => 1);
$aUnfiltered[] = array('value' => 152, 'id' => 2);
$aUnfiltered[] = array('value' => 235, 'id' => 3);
$aUnfiltered[] = array('value' => 325, 'id' => 4);
$aUnfiltered[] = array('value' => 782, 'id' => 5);
$aUnfiltered[] = array('value' => 813, 'id' => 6);
$aUnfiltered[] = array('value' => 901, 'id' => 7);

$aFiltered = array_filter($aUnfiltered, function($aValues)
                         {
                            if($aValues['value'] > 500)
                            return $aValues;
                         });
print_r($aFiltered);

/*
Array
(
    [4] => Array
        (
            [value] => 782
            [id] => 5
        )

    [5] => Array
        (
            [value] => 813
            [id] => 6
        )

    [6] => Array
        (
            [value] => 901
            [id] => 7
        )

)
*/

Mit PHP ein mehrdimensionales Array durchsuchen

Die Methode „array_multi_search“ durchsucht ein mehrdimensionales Array nach einem Wert. Optional kann die Suche auf einen bestimmten Schlüssel eingeschränkt werden. Im Erfolgsfall wird ein Array mit den Suchergebnissen zurückgegeben.

Code:

function array_multi_search($mSearch, $aArray, $sKey = "")
{
    $aResult = array();
   
    foreach( (array) $aArray as $aValues)
    {
        if($sKey === "" && in_array($mSearch, $aValues)) $aResult[] = $aValues;
        else
        if(isset($aValues[$sKey]) && $aValues[$sKey] == $mSearch) $aResult[] = $aValues;
    }
   
    return $aResult;
}

Mit PHP ein mehrdimensionales Array durchsuchen weiterlesen