[PHP] Array herbouwen lukt niet (PHPMyStats)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zoals je hier kan zien ben ik bezig met een project PHPMyStats, ik wil nou zorgen dat ik een module vaker dan één keer kan gebruiken, echter moet ik daarvoor mijn array(die ik al overal gebruik) opnieuw maken.

Ik doe normaal het volgende bij modules uitlezen vanaf een cfg file naar een array:
PHP:
1
2
3
4
5
6
7
8
while (!feof($file)) {
  $buf = fgets($file, 4096);
  $retbuf = explode("<;>",$buf);
  foreach($retbuf as $key => $val) {
    //bla
    //hier return ik naar mn array
  }
}

Ik schijf hierdoor ook de $ret[$key] weg, dus een dubbele module gebruiken KAN gewoon niet, dit moet echte wel kunnen. Dus ik wil ipv een naam bij de array enkel een nummer gebruiken.

Ik ben al een groot end op weg, alleen ik krijg er geen array van gemaakt.
Neem de bovenstaande code en dan even denken dat $buf ongeveer er zo uitziet "modulenaam<;>left<;>bla<;>kradapika".
Ik moet van de laatste waarde van de array $retbuf een \n\r en \n replacen naar niets(weghalen dus), dit wil nog wel lukken. Nou komt het probleem, hoe krijg ik dit terug in een array die de volgende indeling heeft:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Array
(
    [0] => Array
        (
            [0] => modulenam
            [1] => left
            [2] => ertdsfgsdfg
            [3] => dfgdgdfg
            [4] => dfggdfgdg
        )

    [1] => Array
        (
            [0] => modulenamtwee
            [1] => right
            [2] => c:/pagefile.sys
        )

)


Wie kan mij een manier vertellen hoedat ik in het stukje code boven de array opnieuw kan opbouwen.

Ik zat zelf te denken aan deze code:
PHP:
1
2
3
4
5
6
7
8
9
10
$a = array();
while (!feof($file)) {
  $buf = fgets($file, 4096);
  $retbuf = explode("<;>",$buf);
  $a[]=array();
  foreach($retbuf as $key => $val) {
    //replacen, etc
    $a[count($a)][]=$val;
  }
}

Echter loopt door deze code mijn array door de war.

OPGELOST:
En dan kom je er achter dat de functie count waarschijnlijk ook de array's in een array meeneemt en dat het script hierdoor vastloopt.
Dan los je het zo op, en het werkt :+
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$a = array();
$i=0;
while (!feof($file)) {
  $buf = fgets($file, 4096);
  $retbuf = explode("<;>",$buf);
  $a[$i]=array();
  foreach($retbuf as $key => $val) {
    //replacen, etc
    $a[$i][]=$val;
  }
$i++;
}

[ Voor 37% gewijzigd door Verwijderd op 20-01-2004 00:18 . Reden: typo in laatste php code, een [] vergeten |:( ]


Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 18-09 12:47

killercow

eth0

uhm waarom dump je niet gewoon direct $retbuf onder $a[$i]

of lees is ik nu verkeerd?

PHP:
1
2
3
4
$a=array();
while(!feof($file)){
  $a[]=explode("<;>",fgets($file,4096));
}

dat geeft bij mij het zelfde, tenzij ik je vraag niet goed lees,
dat replacen kan je eventueel idd in een foreach loopje doen, al zou ik zeze pas toepassen nadat je de uiteindelijke array opgebouwd heb, (die $i counter is best dubbel op als je gewoon de automatische increment van de array index gebruikt.)

openkat.nl al gezien?