PHP Multidimensional array to string

Schumiel

Lieutenant
Registriert
Jan. 2010
Beiträge
825
Hallo,

ich möchte gern ein Multidimensionales array zu einem string machen. Es gibt hierbei vieles im Netz zu finden. Aber nichts findet zu meiner Lösung oder kann mir daraus abgeleitet für mich erschließen. Es wirkt etwas wie ein Brett vor dem Kopf.

Hier mein array:

PHP:
array(1 item)
   test => array(4 items)
      test_1 => 'vorn' (1 chars)
      test_2 => 'hinten' (1 chars)
      test_3 => 'rechts' (2 chars)
      test_4 => array(2 items)
         0 => 'innen' (1 chars)
         1 => 'außen' (1 chars)

Ich möchte daraus gern einen String machen, indem alle mit einem Semilkolon getrennt werden. Nur "innen" und "außen" sollen mit einem Komma getrennt werden.
Den Key "test" könnte ich auch löschen und habe ich auch schon getan. Jedoch scheitert jeder Versuch mit "implode" durch das array "test_4". Ich erhalte da stets "Array" zurück.
Wenn ich durch das array ein foreach durchjage, dann sind test_1, test_2 und test_3 immer NULL.

Ziel müsste sein "vorn;hinten;rechts;innen,außen".

Hat jemand eine Idee?
 
kann man in PHP nicht testen ob der Typ von einem Element selbst ein Array ist? Warum machst du das nicht in der aeusseren Schleife dann? Und falls ja, behandle das halt wie gewuenscht, falls nicht printe halt den Wert.

Dein Array ist aber auch kein regulaeres 2-dimensionales Array, oder? Das 4. Element selbst ist ein Array, der Rest ja offensichtlich nicht?
 
Kommt halt wirklich extrem auf den Usecase an, wie @floq0r schon geschrieben hast. Falls diese Lösungen nicht möglich sind: rekursive Programmierung und Check auf Array (wie von @abcddcba angeregt) und levelabhängiges Trennzeichen. Ist aber ziemlich bastelig und könnte bspw. "kippen", sobald eine Ebene dazukommt o.ä.
 
PHP:
$string = '';
foreach ($test as $k => $v) {
    $string .= is_array($v) ? implode(',', $v) : $v . ';';
}

string(31) "vorn;hinten;rechts;innen,außen"
 
Pixelhomie, etwas ähnliches hatte ich auch schon versucht. Jedoch erhalte ich bei dem was ich versucht habe und auch bei deinem folgendes Ergebnis:

PHP:
"vorn;hinten;rechts;Array"

Edit:
Wenn ich den key "test" entferne, funktioniert es.

json und serialize sind keine Option, da das nicht das Ziel ist. Sondern das Array in String auflösen.
 
Zurück
Oben