PHP: Array Path

Über die Methode „getValue“ lassen sich die Werte eines mehrdimensionalen Arrays mit der folgenden Notation auslesen: „Key/Key/Key/..“. Ein möglicher Anwendungsfall wäre das Einlesen einer Konfiguration, die in Form eines Arrays vorliegt.

Code:

function getValue($sPath, $aArray)
{
    foreach(explode('/', $sPath) as $sKey)
    $aArray=&$aArray[$sKey];
    return $aArray;
}

PHP: Array Path weiterlesen

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
        )

)
*/

Verzeichnis rekursiv mit PHP auslesen

Diese Methode durchläuft mit Hilfe des DirectoryIterators rekursiv das angegebene Verzeichnis und gibt die Struktur in Form eines Arrays zurück.

Code:

function iterateDir($sPath)
{
    $aRes = array();
    foreach(new DirectoryIterator($sPath) as $oItem)
    {
        if($oItem->isDir())
        {
            (!$oItem->isDot() ? $aRes[$oItem->getFilename()] = iterateDir($oItem->getPathname()):0);
            continue;
        }
        $aRes[] = $oItem->getFilename();
    } return $aRes;
}

Verzeichnis rekursiv mit PHP auslesen weiterlesen

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

PHP: Doppelte Elemente aus einem mehrdimensionalen Array entfernen

Der folgende Code entfernt alle doppelten Elemente aus einem mehrdimensionalen Array. Der strukturelle Aufbau spielt dabei keine Rolle.

Code:

/* Vorher:
Array
(
    [0] => Array ( [0] => unique )
    [1] => Array
        (
            [0] => Array ( [0] => 1337 )
            [1] => Array ( [0] => 1338 )
        )
    [2] => Array
        (
            [0] => Array ( [0] => 1337 )
            [1] => Array ( [0] => 1338 )
        )
    [3] => Array ( [test] => test )
    [4] => Array ( [test] => test )
    [5] => Array ( [0] => 123456 )
    [6] => Array ( [0] => 123456 )
)
*/


$aArray = array_map("unserialize", array_unique(array_map("serialize", $aArray)));

/* Nachher:
Array
(
    [0] => Array ( [0] => unique )
    [1] => Array
        (
            [0] => Array ( [0] => 1337 )
            [1] => Array ( [0] => 1338 )
        )
    [3] => Array ( [test] => test )
    [5] => Array ( [0] => 123456 )
)
*/