2017-02-26 2 views
1

Mit Datei mit folgendem Inhalt:Warum sieht die letzte Array-Spalte so aus?

1 2 3 4 5 0 
6 7 8 9 10 0 
11 12 13 14 15 1 
16 17 18 19 20 1 

ich diesen Code versuchen 2D-Array und erhalten letzten Spalt zu erstellen:

<?php 

$tab = array(); 
$lastColumn=array(); 
$file = file('test.txt'); 
foreach ($file as $item) { 
    array_push($tab, explode(' ', $item)); 
}; 

foreach ($tab as $item) { 
    array_push($lastColumn,end($item)); 
}; 
var_dump($lastColumn); 

Aber letzter cloumn sieht wie folgt aus:

array(4) { [0]=> string(3) "0 " [1]=> string(3) "0 " [2]=> string(3) "1 " [3]=> string(1) "1" } 

All Werte haben string (3) und Leerzeichen nach dem letzten (string (1) und kein Leerzeichen nach)

Ich brauche alle Werte in der letzten Spalte ohne Leerzeichen und String (1). Jemand kann mir helfen?

+1

Sie nicht die Zeilenumbrüche zu entfernen und kann sie nicht sehen, aber sie sind da – charlietfl

+0

wie kann ich das tun? – Marcin

+1

entfernen Sie '\ n' auf jeder Zeile, dann explodieren – charlietfl

Antwort

0

In der durch \n dargestellten Datei sind Zeilenumbrüche vorhanden, die entfernt werden müssen.

Versuchen Wechsel:

foreach ($file as $item) { 
    array_push($tab, explode(' ', $item)); 
}; 

Um so etwas wie:

foreach ($file as $item) { 
    array_push($tab, explode(' ', str_replace('\n','',$item))); 
}; 
0

Alles, was Sie beschrieben haben, wird allgemein als whitespace in der Programmierung bezeichnet. Das heißt, Zeichen, die in der Zeichenfolge vorhanden sind und nicht wie ein Zeichen sichtbar sind.

PHP aufgerufen trim() eine eingebaute Funktion mit diesem zu tun, die alle diese Zeichen beinhaltet:

Diese Funktion gibt eine Zeichenfolge mit Leerzeichen aus dem Anfang und Ende von str abgestreift zurück. Ohne den zweiten Parameter wird trim() diese Zeichen streichen:

"" (ASCII 32 (0x20)), ein gewöhnliches Leerzeichen.

"\ t" (ASCII 9 (0x09)), eine Registerkarte.

"\ n" (ASCII 10 (0x0A)), eine neue Zeile (Zeilenvorschub).

"\ r" (ASCII 13 (0x0D)), ein Wagenrücklauf.

"\ 0" (ASCII 0 (0x00)), das NUL-Byte. "\ x0B" (ASCII 11 (0x0B)), eine vertikale Registerkarte.

So

foreach ($tab as $item) { 
    array_push($lastColumn,end($item)); 
}; 

wird:

foreach ($tab as $item) { 
    array_push($lastColumn,end(trim($item))); 
}; 
Verwandte Themen