Trådstart 16 juli 2002 21:07 #1 Om jag läser in en rad som ser ut som nedan
text1|text2|text3
Om jag läser in det i en array, så blir ju exempelvis $lista[1] = text1|text2|text3
Kan man på något sätt dela på denna rad, så att det blir $list[1] = text1, $lista[2] = text2, osv.... ???
Den ska alltså räkna "|" som en ny rad, och den ska Inte med i värdet på $lista[1].....
Hur gör man detta ??
Textfilen har en hel del rader, så då kanske det blir fel neråt sen.... Hjälp tack !
Matte Medlem sedan aug. 2000 2 975 inlägg <?php
$text = "text1|text2|text3";
$lista = explode("|", $text);
echo $lista[0]."<br>";
echo $lista[1]."<br>";
echo $lista[2];
?>
S SPiN Medlem sedan mars 2000 7 896 inlägg Missade Matte raden om att det fanns flera rader?
Nåja, det var en fin lösning som man bygger vidare på.
<?php
$fileList = file( "dinFil.txt" );
while( $curRow = array_shift( $fileArray ) ) {
$curList = explode( "|", $curRow );
array_push( $resultList, $curList );
}
?>
Jag tror att array_push() kan skjuta till en array ( I det här fallet $curList ) längst bak i $resultList, annars får man trixa lite till:
...
while( $curRow = array_shift( $fileArray ) ) {
$curList = explode( "|", $curRow );
while( $curValue = array_shift( $curList ) )
array_push( $resultList, $curValue );
}
...
Ok.
Om jag vill läsa in en rad ur arrayen och sen köra en explode på den och lägga in text1, text2 och text3 i en ny array. Hur ska jag göra då ?
Är rädd för att ni snackar med en nybörjare
S SPiN Medlem sedan mars 2000 7 896 inlägg Som Matte visade i sitt exempel. Mitt exempel skapade en array av alla rader i filen.
<?php
$fileList = file( "dinFil.txt" );
$rowList = explode( "|", $fileList[ 0 ] );
while( $curRow = array_shift( $rowList ) )
array_push( $resultList, $curRow );
...
?>
Om du inte vill läsa in första raden ur filen, utan t.ex. femte, ändrar du bara $fileList[ 0 ] till $fileList[ 5 ].
Matte Medlem sedan aug. 2000 2 975 inlägg Spin. Vad är finessen med allt det där. Varför inte göra det lite enklare:
<?php
$fileList = file( "dinFil.txt" );
$resultList = explode( "|", $fileList[ 0 ] );
?>
Om jag har fattat det rätt så är det bara att läsa in alla rader i en array och sen köra
$nyarray = explode( "|", $fileList[ önskad_rad ] );
Då hamnar önskad_rad i arrayen $nyarray !?
Rätt ?
Matte Medlem sedan aug. 2000 2 975 inlägg Ja, så brukar jag göra.
Läser man in från en textfil så kan det bli lite radslutsmärken och skräp i slutet av strängen. Det gör inget om man ska skriva ut, men om du har sista delen av strängen (sista post i nya arrayen) till att jämföra med något så kan det bli lite knas. För säkerhets skull gör isåfall såhär:
$nyarray = explode( "|", rtrim($fileList[ önskad_rad ]) );
Om du loopar igenom $fileList så kan du samla arrayerna i en array med:
$nyarray[] = explode( "|", rtrim($fileList[ önskad_rad ]) );
Då får du en tvådimensionell array, och kan lätt ta fram dina värden med typ
echo $nyarray[1][3];
Ok.... då tror jag att jag vet hur jag ska göra, tackar.
Ska testa ikväll.
S SPiN Medlem sedan mars 2000 7 896 inlägg
Spin. Vad är finessen med allt det där.
Det kan man ju fråga sig. Jag måste ha varit trött, eller så var det min dumhet som tog överhanden.