Alle Elemente eines mehrdimensionalen Arrays durchlaufen und bearbeiten

Wenn mit den Werten eines mehrdimensionalen Arrays gearbeitet wird, dann kommen häufig Schleifen zum Einsatz. Das kann bei großen verschachtelten Arrays viel „Schreibarbeit“ bedeuten. Die PHP-Funktion „array_walk_recursive“ vereinfacht das Ganze. In dem nachfolgenden Beispiel werden alle Werte des Arrays in base64 kodiert.

Code:

$aData = array();
$aData['ebene1']            = array_fill(0, 2, 'Wert1');
$aData['ebene1']['ebene2']  = array_fill(0, 2, 'Wert2');

var_dump($aData);

/**
 * Ausgabe (vorher)
 array(1) { ["ebene1"]=> array(3)
                         {[0]=> string(5) "Wert1"
                          [1]=> string(5) "Wert1"
                          ["ebene2"]=> array(2)
                                       {[0]=> string(5) "Wert2"
                                        [1]=> string(5) "Wert2"}}
}
*/


function encodeToBase64(&$aItem, $mKey)
{
    $aItem = base64_encode($aItem);
}

array_walk_recursive($aData, "encodeToBase64");

var_dump($aData);

/*
 * Ausgabe (nachher):
array(1) { ["ebene1"]=> array(3)
                        {[0]=> string(8) "V2VydDE="
                         [1]=> string(8) "V2VydDE="
                         ["ebene2"]=> array(2)
                                      {[0]=> string(8) "V2VydDI="
                                       [1]=> string(8) "V2VydDI="}}
}
*/

Anzahl der Elemente eines Objekts in JavaScript ermitteln

In JavaScript wird häufig ein Objekt als Ersatz für ein assoziatives Array verwendet. Daraus ergibt sich die Problematik, dass die Anzahl der Elemente eines Objekts nicht ohne Weiteres ermittelt werden kann. Abhilfe schafft der folgende Code:

var oTestObject = new Object();

oTestObject['element1'] = "Wert1";
oTestObject['element2'] = "Wert2";
oTestObject['element3'] = "Wert3";
oTestObject['element4'] = "Wert4";

Object.getLength = function(oTmpObject)
{
    var iLength = 0;

    for (var sKey in oTmpObject)
    {
        if (oTmpObject.hasOwnProperty(sKey)) iLength++;
    }
    return iLength;
};

//Anzahl der Elemente ermitteln
var iLength = Object.getLength(oTestObject); //4

Demo: