csv Datei einlesen und Arrays mergen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • csv Datei einlesen und Arrays mergen

    Hallo!

    Ich lese eine CSV Datei mit der php.net Funktion ein. Danach erhalte ich meine Daten als array:

    PHP-Code:

    Array
    (
        [
    0] => 1
        
    [1] => BMW
        
    [2] => 9510
    )
    Array
    (
        [
    0] => 2
        
    [1] => BMW
        
    [2] => 1780
    )
    Array
    (
        [
    0] => 3
        
    [1] => OPEL
        
    [2] => 3174
    )
    Array
    (
        [
    0] => 4
        
    [1] => Golf
        
    [2] => 2492
    )
    .
    .
    .


    Nun versuche ich erfolglos die einzelnen Array's zu mergen. Die, mit der gleichen
    Automarke sollen zusammengefasst werden.
    Ich habe es mit array_merge() versucht, aber da es sich um mehr als 1000 Arrays handelt, kann ich diese Funktion nicht anwenden.


  • #2
    Zitat von der_meier_hans Beitrag anzeigen
    Ich habe es mit array_merge() versucht
    Klingt unsinnig.

    Wenn du eine andere Datenstruktur haben willst, wieso erstellst du dir diese dann nicht direkt beim Einlesen der Daten?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Zitat von der_meier_hans Beitrag anzeigen
      Hallo!

      Ich lese eine CSV Datei mit der php.net Funktion ein. Danach erhalte ich meine Daten als array:

      PHP-Code:

      Array
      (
          [
      0] => 1
          
      [1] => BMW
          
      [2] => 9510

      "php.net Funktion"? Meintest du fgetcsv()?

      Nun versuche ich erfolglos die einzelnen Array's zu mergen. Die, mit der gleichen
      Automarke sollen zusammengefasst werden.
      Wie genau?

      Es dürfte wohl auf eine benutzerdefinierte Funktion hinauslaufen, die du dir selbst schreiben musst. Etwa so:

      PHP-Code:
      $csv = ...; // siehe dein Array

      function collect_cars(
        
      $from_csv
      ) {
        
      // hier kommen die "gesammelten|zusammengefassten"
        // Autos rein 
        
      $collected = array ();

        
      // das CSV-Arrray wird der Reihe nach abgearbeitet
        
      foreach ($from_csv as $car) {
          
      $type $car[0]; 

          
      // falls der "Autotyp" (die Marke) noch nicht erfasst wurde,
          // wird eine neuer Eintrag dafuer angelegt
          
      if (!isset($collected[$type])) {
            
      $collected[$type] = array ();
          }

          
      // jedes Auto einsammeln
          
      $collected[$type][$cars[0]] = $cars[1]; 
        }
        return 
      $collected;
      }

      $collected_cars collect_cars($csv); 
      Ich habe es mit array_merge() versucht, aber da es sich um mehr als 1000 Arrays handelt, kann ich diese Funktion nicht anwenden.
      Wer behauptet das? Ich glaube zwar nicht, dass array_merge() bei der Lösung deines Problems hilfreich sein könnte, aber eine Begrenzung auf unter 1000 Arrays ist bei dieser Funktion sicher nicht eingebaut.
      Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

      Kommentar

      Lädt...
      X