Tom: $_POST Array vergleichen mit Array und Array erweitern

Beitrag lesen

Hello Runtop,

im Moment bist Du wohl eher Creeptop? :-))

Ich hatte ja versprochen, swelber auch noch weiter über die Sache nachzudenken.
Aber bislang komme ich immer wieder auf diese kleine Funktion:

<?php   ### linearize_array.php ###

$_testarr = array();

$_testarr['vorname'][0] = 'Hans';
    $_testarr['vorname'][1] = 'Klaus';
    $_testarr['vorname'][2] = 'Peter';
    $_testarr['name']       = 'Mustermann';
    $_testarr['plz']        = '37444';
    $_testarr['interessen']['privat'][0] = 'lesen';
    $_testarr['interessen']['privat'][1] = 'Fußball';
    $_testarr['interessen']['beruflich'] = 'PHP';

#------------------------------------------------------------------------------
    function linearize($_source, &$_target, $path='')
    {
        if (is_array($_source))
        {
            foreach($_source  as $key => $val)
            {
                linearize($val, &$_target, $path.'.'.$key);
            }
        }
        else
        {
            $_target[] = ltrim($path,'.');
        }
    }
#------------------------------------------------------------------------------

linearize($_testarr, $_target);

echo "<pre>\r\n";
    echo htmlspecialchars(print_r($_target,1))."\r\n";
    echo "</pre>\r\n";

?>

Wende die mal auf dein $_POST-Array an.
Du solltest dann sehen, wie man der Sache zu Leibe rücken kann.

Dein Expexcted-Array sollte dann einen Eintrag für jedes erwarte Element haben.
Die sind nun natürlich in ihren Namen etwas beschränkt. Einen Punkt sollte der nicht enthalten.

Dann kannst Du im "Abhaken-Zweig" des Expected-Arrays alle Namen der Parameter abhaken, die übertragen worden sind.

Nun musst Du nur noch diejenigen finden, die nicht abgehakt wurden, aber Default-Felder sind. Dann erzeugst Du diese einfach zusätzlich im Datenbereich des $_POST-Array (da kommt noch eine kleine Funktion) und setzt den Default ein.

Die Sache, mit der ich mich noch beschäftigen wollte, sind absolut dynamisch erzeugte Post-Parameter(-Arrays). Die kann es ja geben, wenn man im Client JavaScript einsetzt.

Da will man ja nicht für jeden Parameter einen Eintrag in der linearisierten Liste haben, wenn die Defaults sowieso identisch sind, sondern nur den erlaubten Bereich (von 0 bis 115, von 'A' bis 'Z' oder was auch immer).

Aber das muss Dich ja für Dein Problem erstmal nicht stören.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de