mehrdimensionale Arrays dynamisch erweitern
Joachim
- php
hi,
ich bastele an einer Funktion, mit der ich mehrdimensionale Arrays dynamisch erweitern kann.
Meine bisherige Konstruktion haut leider nicht hin, da sich die Durchlaeufe der rekursiven Funktion gegenseitig ueberschreiben.
Laesst sich mit diesem Ansatz noch was anfangen, oder muss man sowas ganz anders loesen. Falls letzteres - wie?
Anbei mein Gebastels ich habe es mal komplett dranngehaengt, wobei "readOutArr" nur zur Ausgabe des Arrays dient, mein Problem ist die "writeInArr()".
Gruesse Joachim
// ---- schnipp -------
<?php
// testarray
$line[] = "blih";
$line[] = "die";
$line[]["lala"] = array(0 => "japp", 1 => "dup");
$line[]["pups"][]["jep"][] = "paps";
$line[] = "uff";
function writeInArr($arr, $toEl, $newVal)
{
global $temp;
foreach($arr as $key => $val)
{
if(is_array($arr[$key]))
{
if($key == $toEl)
{
array_push($arr[$key], $newVal);
}
writeInArr($arr[$key], $toEl, $newVal);
}
else
{
if($arr[$key] == $toEl)
{
$arr[$key] = array($toEl => array($newVal));
}
}
}
// testausgabe
readOutArr($arr);
echo "<br><br><br>";
$line = $arr;
}
writeInArr($line, "pups", "bbbb");
// array ausgeben
// arraytiefe $i
$i = 0;
function readOutArr($arr)
{
global $i;
foreach($arr as $key => $val)
{
if(is_array($val))
{
echo (str_repeat(" ", $i)) . $key . " enthält:<br>";
$i ++;
readOutArr($val);
}
else
{
echo (str_repeat(" ", $i)) . $key . " = " . $val . "<br>";
}
}
$i = 0;
}
?>
<html><head></head><body>
<?php
readOutArr($line);
?>
</body></html>