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;
}

Anwendungsbeispiele:

$aMyArray[] = array("id" => 1, "name" => "Max Mustermann", "group_id" => 1);
$aMyArray[] = array("id" => 2, "name" => "Karl Aschnikow", "group_id" => 1);
$aMyArray[] = array("id" => 3, "name" => "Rainer Zufall", "group_id" => 2);

//Sucht nach dem Vorkommen der Zahl 2
print_r(array_multi_search(2, $aMyArray));

/*
Ausgabe:

Array
(
    [0] => Array
        (
            [id] => 2
            [name] => Karl Aschnikow
            [group_id] => 1
        )

    [1] => Array
        (
            [id] => 3
            [name] => Rainer Zufall
            [group_id] => 2
        )
*/


//Sucht nach dem Vorkommen der Zahl 1 im Element "group_id"
print_r(array_multi_search(1, $aMyArray, "group_id"));

/*
Ausgabe:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Max Mustermann
            [group_id] => 1
        )

    [1] => Array
        (
            [id] => 2
            [name] => Karl Aschnikow
            [group_id] => 1
        )
)
 
*/


//Sucht den Namen "Rainer Zufall" im Element "name"
print_r(array_multi_search("Rainer Zufall", $aMyArray, "name"));

/*
Ausgabe:

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => Rainer Zufall
            [group_id] => 2
        )

)
 */

6 Gedanken zu „Mit PHP ein mehrdimensionales Array durchsuchen“

Schreibe einen Kommentar