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="}}
}
*/

PHP: Text zwischen zwei Zeichen extrahieren

Die folgende Methode extrahiert einen beliebigen Text zwischen zwei definierten Zeichen.

Code:

function extractStringBetween($cFirstChar, $cSecondChar, $sString)
{
    preg_match_all("/\".$cFirstChar."(.*?)\".$cSecondChar."/", $sString, $aMatches);
    return $aMatches[1];
}

$sMyString = "
Bitte alle eingeklammerten Begriffe extrahieren: [Symfony] [CodeIgniter] #PHP# [Zend]";

var_dump(extractStringBetween("[", "]", $sMyString));

/*
 * Ausgabe:
 *
array(3)
{
  [0]=>
  string(7) "Symfony"
  [1]=>
  string(11) "CodeIgniter"
  [2]=>
  string(4) "Zend"
}
*/

Alternierende Hintergrundfarbe in einer Tabelle mit jQuery

Mit jQuery lässt sich eine Tabelle mit zeilenweise alternierender Hintergrundfarbe sehr einfach implementieren. Mit dem folgenden Code muss lediglich die Style-Klasse „alternating_row“ festgelegt werden:

Beispiel:

jQuery-Code:

$(document).ready(function()
{
  $("table.alternating_row tr:even").css("background-color", "#EBDDE2");
  $("table.alternating_row tr:odd").css("background-color", "#C8BBBE");
});

HTML-Code:

<table class="alternating_row">
    <tr>
        <th>Spalte 1</th>
        <th>Spalte 2</th>
        <th>Spalte 3</th>
        <th>Spalte 4</th>
    </tr>
    <tr>
        <td>Eintrag 1</td>
        <td>Eintrag 1</td>
        <td>Eintrag 1</td>
        <td>Eintrag 1</td>
    </tr>
    <tr>
        <td>Eintrag 2</td>
        <td>Eintrag 2</td>
        <td>Eintrag 2</td>
        <td>Eintrag 2</td>
    </tr>
    <tr>
        <td>Eintrag 3</td>
        <td>Eintrag 3</td>
        <td>Eintrag 3</td>
        <td>Eintrag 3</td>
    </tr>
    <tr>
        <td>Eintrag 4</td>
        <td>Eintrag 4</td>
        <td>Eintrag 4</td>
        <td>Eintrag 4</td>
    </tr>
</table>

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:

jQuery Select2 3.1 Plugin

Select2 3.1 ist ein jQuery Plugin (siehe http://ivaynberg.github.com/select2/) mit dem die Usability und Optik von Auswahlfeldern deutlich verbessert werden kann. Das Schöne an diesem Plugin ist, dass man als Entwickler mit wenig Aufwand mächtige Funktionen in Auswahl-Felder integrieren kann. Wie z.B.:

    • Text-Suche mit autosuggest
    • facebook-artige Mehrfachauswahl
    • Nachladen von Daten per Ajax

Zwei Beispiele, wie soetwas aussehen kann:

Code:

    <script>
    $(document).ready(function()
    {
        $("#select1").select2();
        $("#select2").select2();
    });
    </script>


Links:

Demo | Select2 3.1 Homepage