Avatar billede kulashaker Nybegynder
19. oktober 2005 - 19:25 Der er 9 kommentarer og
2 løsninger

filestream til 2D array

Hej,

Jeg er ret ny i PHP.

Jeg har en tekst-fil liggende med X antal (lige lange) linier tal i. Jeg vil gerne læse disse tal ind i et 2D array, altså den første linie ind på plads [0], næste linie ind på plads [1] osv.

Umiddelbart kan jeg ikke finde nogen PHP-funktioner der kan dette...

Kan nogen hjælpe mig med at konstruere dette?

Venligst
Christian
Avatar billede jaw Nybegynder
19. oktober 2005 - 19:29 #1
Måske:

<?
$array = array();
$lines = file('filnavn.txt');
foreach($lines as $v) {
  $array[] = $v;
}
?>

Eller bare:

<?
$lines = file('filnavn.txt');
?>
så har du alle linierne i $lines[0], $lines[1] osv. osv.
Avatar billede kulashaker Nybegynder
19. oktober 2005 - 19:37 #2
Det var hurtigt :-)

Men tror måske at jeg har formuleret mig forkert. Tallene i filen er adskildt med mellemrum og jeg vil gerne have alle tallene hver for sig i linie 1 ind på $arr[0][0], $arr[0][1], $arr[0][2]... tallene i linie 2 ind på $arr[1][0], $arr[1][1]....osv.

Det gør jeg vist ikke med dit eksempel.. eller!?

Undskyld..
Avatar billede hmortensen Nybegynder
19. oktober 2005 - 19:42 #3
Måske sådan her:

$data = file("fil.txt");
$result = array();

foreach ($data as $line)
{
    $result[] = explode(" ", $line);
}
Avatar billede kulashaker Nybegynder
19. oktober 2005 - 19:58 #4
Det virker fint, men hver linie kommer ind samlet i det 0'e element...

Jeg prøver lige med et eksempel:

11 12 13
21 22 23

Jeg vil gerne have:

Første linie: 11 ind på $arr[0][0], 12 ind på $arr[0][1], 13 ind på $arr[0]2]
Anden linie: 21 ind på $arr[1][0], 22 ind på $arr[1][1], 23 ind på $arr[1][2]
Avatar billede hmortensen Nybegynder
19. oktober 2005 - 20:03 #5
Det gør det også...

Resultat:
Array
(
    [0] => Array
        (
            [0] => 11
            [1] => 12
            [2] => 13

        )

    [1] => Array
        (
            [0] => 21
            [1] => 22
            [2] => 23
        )

)
Avatar billede kulashaker Nybegynder
19. oktober 2005 - 20:10 #6
Hehe, ok! Måske det er mig der har misforstået det...

Jeg prøvede at skrive Array'et ud med print_r hvor jeg får:

Array ( [0] => Array ( [0] => 08 15 18 23 29 34 35 )
        [1] => Array ( [0] => 02 05 18 19 20 25 28 )

Hvis jeg prøver med print $result[0][0] så får jeg hele linien ud på éen gang.

Hvordan har du skrevet dit resultat ud?
Avatar billede jaw Nybegynder
19. oktober 2005 - 20:11 #7
Det er ikke dobbelt-mellemrum, tabs eller noget andet tosset du har i tekst-filen?
Avatar billede kulashaker Nybegynder
19. oktober 2005 - 20:16 #8
Jeg er vist ikke vågen - jo, det var tabs :/ Det virker fint med tab som delimiter..

Tak for god hjælp begge, smid er svar begge 2.

venligst
christian
Avatar billede hmortensen Nybegynder
19. oktober 2005 - 20:21 #9
Det var så lidt :)
Avatar billede jaw Nybegynder
19. oktober 2005 - 20:22 #10
Jeg smider også svar, men måske hmortensen kom med den bedste - i hvert fald mest korrekte - løsning? :)
Avatar billede kulashaker Nybegynder
19. oktober 2005 - 20:27 #11
Yes, det har du ret I - det bliver 40/20 :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester