00 Stimmen

PHP: Ergebnis von chunk_split als Array ausgeben

Frage von Compi | 13.07.2015 um 19:54

Ich möchte mit PHP einen beliebigen String in gleich lange Teile splitten. Im Grunde genommen ist die PHP-Funktion chunk_split() genau das, was ich suche. Bisher habe ich folgenden Code entwickelt.

$s = "ABCDEFGHI";

$res = chunk_split($s, 3);

echo $res; 
// ergibt "ABC DEF GHI" - ich brauche aber einen Array!

Allerdings liefert mir chunk_split() die Teile als String zurück, ich benötige aber als Rückgabewert einen Array, also jedes Teil als ein Element.

Gibt es irgendeine Möglichkeit, chunk_split() so zu nutzen, dass ich einen Array erhalte? Ich bin für alle Lösungsvorschläge offen.

AntwortenPositivNegativDatumStimmen
1Beste Antwort1 Stimme

Die Funktion chunk_split() gibt immer einen String zurück, du kannst dir aber einfach schneller eine eigene Funktion schreiben, die dir einen Array zurück gibt.

Zum Beispiel könnte eine Funktion folgendermaßen aussehen:

function chunk_split_arr($str, $chunklen) {
   $res = array();
   $k = ceil(strlen($str) / $chunklen);
   for($i = 0; $i < $k; $i++) {
      $res[] = substr($str, $i * $chunklen, $chunklen);
   }
   return $res;	
}

Ein Aufruf wäre dann zum Beispiel so möglich (hier teilen wir den String "ABCDEFG" in Teile mit einer Länge von 3 Zeichen):

$s = 'ABCDEFG';

$arr = chunk_split_arr($s, 3);

var_dump($arr);

// Ergebnis:
//
// array(3) {
//   [0]=> string(3) "ABC"
//   [1]=> string(3) "DEF"
//   [2]=> string(3) "GHI"
// }

In der Funktion ermitteln wir zunächst die Anzahl der zu erwartenden Teile und anschließend durchlaufen wir alle Teile und nutzen substr() um das entsprechende Teil heraus zuschneiden und zu unserem Ergebnis-Array hinzuzufügen.
13.07.2015 um 20:20

AntwortenPositiv Negativ
00 Stimmen

Du könntest auch mit chunk_split() und explode() arbeiten.

Hier ist ein kleines Beispiel ohne Funktion:

$s = 'ABCDEFGHI';
$chunklen = 3;

$s = chunk_split($s, $chunklen, '|');
$s = substr($s, 0, -1);
$arr = explode('|', $s);

Und hier dasselbe in eine Funktion gepackt:

function chunk_split_arr($str, $chunklen) {
  $s = chunk_split($str, $chunklen, '|');
  $s = substr($s, 0, -1);
  return explode('|', $s);
}

Benutzen kannst du die Funktion chunk_split_arr() genauso wie im Beispiel von meinem Vorredner.

Wir benutzen hier chunk_split und teilen unseren String mit dem Trennzeichen "|". Anschließend müssen wir mit substr() das letzte Zeichen entfernen, da wir sonst im Ergebnis ein Teil zu viel bekommen. Anschließend nutzen wir explode() um unseren String am Trennzeichen zu teilen und bekommen ein Array zurück.

Wichtig ist natürlich ein Trennzeichen zu verwenden, das selber nicht in dem String vorkommt, da explode() ansonsten auch an dieser Stelle eine Trennung durchführen wird.
13.07.2015 um 23:11

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.