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
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
Ich wäre über eine Lösung oder einen Weg dorthin dankbar.
Kommentar