csv Datei einlesen und Arrays mergen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Originally posted by der_meier_hans View Post
    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.

    Comment


    • #3
      Originally posted by der_meier_hans View Post
      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!

      Comment

      Working...
      X