Moin, moin,
ich habe verschiedene mehrdimensionale Arrays, welche ich so als HTML-Formular darstellen will, dass man die Werte über text-felder bearbeiten und dann (mittels post des formulars) wieder als array in php bekommen kann.
Beispiel:
Array:
jetzt habe ich eine Funktion, die mir rekursiv das array durchgeht und für jedes "Blatt" des Astes ein text-feld erstellt.
Das Problem ist nun folgendes:
Im name-Attribut des input-feldes sollte das Array wieder abgebildet werden, damit das nach dem Post nicht neu zusammengebaut werden muss.
z.B.:
name='constantValue[0][MemberCount]'
und
name='constantValue[0][Definition][1]'
für die weiteren Elemente sollte dann z.B. folgendes stehen:
name='constantValue[1][MemberCount]'
und
name='constantValue[1][Definition][1]'
bzw.
name='constantValue[1][Definition][2]'
das klappt aber in der o.g. Funktion nicht, da die Funktion nicht weiß wann und wie viele Elemente in $fieldName gelöscht werden müssen, um z.B. das erste Element [0] durch [1] zu ersetzen und anschließend alle weiteren elemente wieder hinzuzufügen.
Ich hoffe, meine Beschreibung hat nicht noch mehr verwirrung gestiftet![Wink](https://www.php-resource.de/forum/core/images/smilies/wink.gif)
Ich wäre über eine Lösung oder einen Weg dorthin dankbar.
ich habe verschiedene mehrdimensionale Arrays, welche ich so als HTML-Formular darstellen will, dass man die Werte über text-felder bearbeiten und dann (mittels post des formulars) wieder als array in php bekommen kann.
Beispiel:
Array:
PHP-Code:
array(
array(
"MemberCount" => "5",
"Definition" => array(
"1" => "1.00" )
),
array(
"MemberCount" => "10",
"Definition" => array(
"1" => "0.50",
"2" => "0.30",
"3" => "0.20")
),
array(
"MemberCount" => "1000000",
"Definition" => array(
"1" => "0.45",
"2" => "0.25",
"3" => "0.15",
"4" => "0.10",
"5" => "0.05")
)
)
)
PHP-Code:
function echo_array($array, $return_me = false, $fieldName = "") {
$return = "";
if(is_array($array) == false){
$return = "The provided variable is not an array.";
} else {
foreach($array as $name=>$value){
$fieldName .= "[$name]";
if(is_array($value)){
$return .= "";
$return .= "$name => <div style='margin-left:20px;'>";
$return .= $this->echo_array($value, true, $fieldName);
$return .= "</div>";
$return .= "";
}else{
if(is_string($value)){
$value = "$value";
}
$return .= "$name => <input type='text' name='constantValue$fieldName' value='$value' style='width:300px;' /><br />";
$fieldName = str_replace("[$name]", "", $fieldName);
}
}
}
if($return_me == true){
return $return;
} else {
echo "<pre>".$return."</pre>";
}
}
Im name-Attribut des input-feldes sollte das Array wieder abgebildet werden, damit das nach dem Post nicht neu zusammengebaut werden muss.
z.B.:
name='constantValue[0][MemberCount]'
und
name='constantValue[0][Definition][1]'
für die weiteren Elemente sollte dann z.B. folgendes stehen:
name='constantValue[1][MemberCount]'
und
name='constantValue[1][Definition][1]'
bzw.
name='constantValue[1][Definition][2]'
das klappt aber in der o.g. Funktion nicht, da die Funktion nicht weiß wann und wie viele Elemente in $fieldName gelöscht werden müssen, um z.B. das erste Element [0] durch [1] zu ersetzen und anschließend alle weiteren elemente wieder hinzuzufügen.
Ich hoffe, meine Beschreibung hat nicht noch mehr verwirrung gestiftet
![Wink](https://www.php-resource.de/forum/core/images/smilies/wink.gif)
Ich wäre über eine Lösung oder einen Weg dorthin dankbar.
Kommentar