Hi,
ich habe mir gerade zwei Funktionen geschrieben die folgendes machen.
Aus
wird
Ok, ich weiß das es unschön ist die Eckigen Klammern als Keys zu nehmen.
ergibt dann:
Es geht darum mehrdimensionale Arrays in den GetString einer URL zu verpacken. Man könnte es auch mit Serialize machen - da ich aber keine Zugriff auf die empfangende Schnittstelle habe, fällt das aus.
Hier die Funktionen:
Es funktioniert soweit, auch mit beliebigen "Tiefen" der Arrays. Zwei Fragem hätt ich aber noch:
1. Wär es möglich das ganze in eine Funktion zu packen? (Wobei mir da grad was einfällt - ich geb ja in flatten_array einen Array zurück - ich könnte ja auch den String dort direkt zusammenbauen.)
2. Gibt es vielleicht da schon ne Funktion für und ich hab sie nur nicht gefunden?
ich habe mir gerade zwei Funktionen geschrieben die folgendes machen.
Aus
Code:
Array ( [kunde] => Array ( [vorname] => ich [nachname] => der ) [artikel] => Array ( [0] => 12345 [1] => 43224 [2] => 23342 [3] => 33453 ) [summe] => 214.23 )
Code:
Array ( [[kunde][vorname]] => ich [[kunde][nachname]] => der [[artikel][0]] => 12345 [[artikel][1]] => 43224 [[artikel][2]] => 23342 [[artikel][3]] => 33453 [[summe]] => 214.23 )
PHP-Code:
echo array2getstr('param_input_array', $arr_input);
PHP-Code:
?param_input_array[kunde][vorname]=ich¶m_input_array[kunde][nachname]=der.....
Es geht darum mehrdimensionale Arrays in den GetString einer URL zu verpacken. Man könnte es auch mit Serialize machen - da ich aber keine Zugriff auf die empfangende Schnittstelle habe, fällt das aus.
Hier die Funktionen:
PHP-Code:
function flatten_array($arr_input, $arr_output = array(), $parent_key = "", $child = false){
while($data = pos($arr_input)){
$key = "[".key($arr_input)."]";
if(is_array($data)){
$arr_output = flatten_array($data, $arr_output, $parent_key.$key, true);
}else{
if($child){
$arr_output[$parent_key.$key] = $data;
}else{
$arr_output[$key] = $data;
}
}
next($arr_input);
}
return $arr_output;
}
function array2getstr($str_name, $arr_input){
$arr_output = flatten_array($arr_input);
while($data = pos($arr_output)){
$key = key($arr_output);
$str_output .= $str_name.$key."=".$data;
if(next($arr_output)){
$str_output .="&";
}
}
return $str_output;
}
1. Wär es möglich das ganze in eine Funktion zu packen? (Wobei mir da grad was einfällt - ich geb ja in flatten_array einen Array zurück - ich könnte ja auch den String dort direkt zusammenbauen.)
2. Gibt es vielleicht da schon ne Funktion für und ich hab sie nur nicht gefunden?
Kommentar