2016-03-27 6 views
1

Ich mache etwas, das vielleicht zu lang und seltsam zu erklären ist, aber im Grunde habe ich eine Zeichenfolge auf eine komplexe Weise in ein Array auf eine Weise abgebildet, um sie durcheinander zu bringen. Dies ist ein Beispiel dafür, wie es aussehen würde:Multidimensionale Array-Zeilen und ihre jeweiligen Elemente zählen?

field[26][25]='x'; 
field[24][23]='z'; 
field[28][29]='y'; 

Jetzt, wo ich erfolgreich die Zeichenfolge in genau die Art und Weise durcheinander gewürfelt habe ich wollte, ich brauche das lineare Ergebnis zu rekonstruieren.

Also muss ich Zeile 1 des Arrays nehmen, und durchlaufen Sie alle Elemente in dieser Zeile, um sie zu einer Zeichenfolge zu kombinieren. Machen Sie dann dasselbe mit Zeile 2 und so weiter, um eine massive lineare Zeichenkette zu erstellen.

Wie zähle ich, wie viele Zeilen und Elemente in diesen Zeilen ich habe? Für das Leben von mir kann ich nicht einmal anfangen zu finden, wie dies für Multi-Arrays zu tun.

Mit freundlichen Grüßen

+1

'foreach' und' implode' –

+0

Was genau brauchen Sie? Um die Elemente in jeder Zeile zu zählen oder alle Werte in einer bestimmten Reihenfolge zu einer Zeichenfolge hinzuzufügen? Die beiden Aufgaben sind nicht unbedingt miteinander verbunden. Sie können die Werte verbinden, ohne sie zu zählen. – axiac

Antwort

0

@ u_mulder gibt es eine feste Antwort. Für die Anzahl der Elemente, würden Sie gerade sagen:

$total = 0; 
foreach($matrix as $row) $total += count($row); 

Für die Verkettung von Elementen, würde man nur sagen:

$concat = ''; 
foreach($matrix as $row) $concat .= implode('', $row); 

Bobs dein Onkel. Aber gibt es wirklich einen gültigen Anwendungsfall für solch ein seltsames Mashup?

0
$field[26][25]='x'; 
$field[24][23]='z'; 
$field[28][29]='y'; 
$field_string = ''; 
array_walk_recursive ($field , function($item, $key) use (&$field_string){ 
if(!is_array($item)){ 
    $field_string .= $item; 
} 
}); 
echo $field_string; 

Ehrlich gesagt, das ist ein wenig verwirrend. Ich kann weitere Informationen benötigen, aber lassen Sie mich wissen, ob dies

0

hilft Sie können mit einem leeren String starten und verwenden zwei verschachtelte foreach über Linien und Punkte auf jeder Zeile zu durchlaufen und jedes Element an den String angehängt:

$result = ''; 
foreach ($fields as $row) { 
    foreach ($row as $item) { 
     $result .= $item; 
    } 
} 

Oder Sie können die gesamte innere foreach durch $result .= implode('', $row); ersetzen.

Sie können sogar die äußere foreach mit einem Aufruf an array_map() ersetzen dann implode() das Array von array_map() in einen String erzeugt:

$string = implode(
    '', 
    array_map(
     function (array $items) { 
      return implode('', $items); 
     }, 
     $fields 
    ) 
); 
Verwandte Themen