Neuen Array in foreach erzeugen

DerAlex4

Grünschnabel
Hallo,
Ich versuche aus einer csv Datei Daten auszulesen und zu speichern. Informationen in der Datei sind mit ',' getrennt. Daher speicher ich zuerst alle Elemente in den Array $v. Da ich aber nur jedes 7te Element speichern möchte versuche ich in der foreach Schleife diese in ein weiteres Array zu speichern.
Zeile 11 gibt mir wie gewünscht das richtig Element zurück. Es wird aber scheinbar nicht in $ary gespeichert. var_dump gibt eine Länge von 1 zurück mit 131075 als Inhalt, was das letzte Element von den ersten Array ist.

Hoffe ihr versteht mein Problem und verzeihung für den schrecklichen Programmierstil:D.
Code:
<?php  
      $file="ES_1mBar_20120120.csv";
      $datei=file_get_contents($file);
      $v=array();
      $v=explode(",",$datei);
  $i=0;
  $x=0;
  $ary=array();
 foreach($v as $k){
   if($i==6){			// to take every seventh element
      $ary[x]=(int)substr($k,0,6);	//shortens the String element and cast int
      $x++;
      $i=0;
   }
   $i++;
  }
  echo var_dump($ary);  // array(1) { ["x"]=> int(131075) }
  echo count($ary);		// <---- 1****?
?>
 
Zudem machst du dir das leben unnötig schwer.
PHP bietet gute Möglichkeiten um mit csv zu arbeiten: fgetcsv()

PHP:
$handle = fopen ('ES_1mBar_20120120.csv', 'r');
while (($row = fgetcsv ($handle, 1000, ",")) !== FALSE ) {
    // 7tes Element der Zeile hat den Index 6
    $ary[] = (int) $row[6];
}
fclose ($handle);
var_dump($ary);

Nachtrag:
Ich komme ab der AUfgabenstellung noch nicht ganz klar. Also das obige Beispiel nimm immer den 7ten Eintrag pro csv-Zeile. Die Beschreibung und dein Code lässt mich aber vermuten, dass du nur eine Zeile mit zig Feldern hast und von dieser Liste jeden 7ten Eitrag haben willst. Dann bieten sich Array und ihre Möglichkeiten an
PHP:
// Test-Array mit 56 Einträgen
$data= range('A','x');

// Die Auswahlmaske erstellen für jeden 7ten Eintrag
$select = range(-1, count($data)-1, 7);

// Jeden 7ten Eintrag herauspicken.
$result = array_intersect_key($row, array_flip($select));

var_dump($result);
 
Zurück