Ankündigung

Einklappen
Keine Ankündigung bisher.

Multidimensionales Array in Klasse Problem

Einklappen

Neue Werbung 2019

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

  • Multidimensionales Array in Klasse Problem

    Morsche,

    malne frage, kann mir jemand sagen wo hier das Problem ist?

    ich möchte einfach in der 2. funktion auf das MultiDIM Array zugreifen, bekomme aber in der ersten funktion nur die erste Zeile aus der textdatei geliefert!

    <?

    class test{

    var $id;
    var $gutgell;

    function plehfunc(){

    $i = 0;
    $fp = @fopen("produkte.dat","r");

    $produktearray = array();

    while ($zeile = @fgets($fp,512000)) {
    $zeile = trim($zeile);
    $zeile = split("\|",$zeile);

    $this->$produktearray{$i} = array("kategorie" => $zeile[0],
    "bild" => $zeile[1],
    "headline" => $zeile[2],
    "text" => $zeile[3],
    "detailtext" => $zeile[4],
    "warenkorbtext" => $zeile[5],
    "preis" => $zeile[6]
    );

    $i++;
    }

    }


    function output(){

    $this->plehfunc();

    print_r($this->$produktearray);

    }


    }


    $pleh = new test;

    $pleh->output();

    ?>


    grande merci

  • #2
    mach mal mit php tags...

    was ist das:
    $produktearray{$i} is das gewollt? oder meinst du : $produktearray[$i]
    ?


    habs nur überflogen...

    mfg
    Andi

    Kommentar


    • #3
      tipp: du schreibst einmal $produktearray und ein andermal $this->produktearray
      (ohne es als variable in der klasse zu deklarieren)
      PHP & Linux-Support uvm...

      Kommentar


      • #4
        $produktearray{$i} g�be es eigentlich auch.. (wei� aber nicht ob das bei nem array �berhaupt geht.. eigentlich nur bei zahlen oder strings!)

        www.php.net/function.substr

        mfg Andi

        Kommentar


        • #5
          Zitat von DER_Brain
          $produktearray{$i} gaebe es eigentlich auch..
          (weiB aber nicht ob das bei nem array ueberhaupt geht..
          eigentlich nur bei zahlen oder strings!)
          der variablentyp hat damit nichts zu tun. es geht hierbei nur um
          den variablennamen, wie z.b.:

          alles die gleiche variable:

          PHP-Code:
          $foobar;
          ${
          'foobar'};
          $x='foobar'; ${$x}; 
          so wirds oft benutzt, falls kein array funktionieren würde:
          PHP-Code:
          $foo1 123;
          $foo2 456;
          $foo3 789;

          for (
          $i=1$i<=3$i++)
            echo ${
          'foo'.$i}; 
          PHP & Linux-Support uvm...

          Kommentar


          • #6
            wir meinen zwei verschiedene dinge.. ich habe jetzt {zahl} in der verbindung mit substr gemeint..

            Zitat von Manual
            PHP-Code:
            <?php
            echo substr('abcdef'1);    // bcdef
            echo substr('abcdef'13);  // bcd
            echo substr('abcdef'04);  // abcd
            echo substr('abcdef'08);  // abcdef
            echo substr('abcdef', -11); // f

            // Auf ein einzelnes Zeichen eines Strings kann auch mittels
            // geschweifter Klammern erfolgen
            $string 'abcdef';
            echo 
            $string{0};                // a
            echo $string{3};                // d
            echo $string{strlen($string)-1}; // f

            ?>
            mfg
            Andi

            Kommentar


            • #7
              aijeeee, da hab ich wohl nicht aufgepasst *G*

              geht mit arrays übrigends auch:

              PHP-Code:
              <?php
              $foo
              [0] = 123;
              $foo[1] = 456;
              $foo[2] = 789;

              echo 
              $foo{1};  // output: 456
              ?>
              PHP & Linux-Support uvm...

              Kommentar


              • #8
                nein.. das bezweifel ich auch ebenfalls..

                echo $foo funktioniert ja auch ned.. man muss ja das ganze auch ansprechen.. wenn, dann so:
                PHP-Code:
                echo $foo['1']{1// output: 4 (nicht 456) 
                mfg
                Andi

                Kommentar


                • #9
                  mit php-5.1 geht beides wie folgt:

                  PHP-Code:
                  echo $foo{1// output: 456
                  echo $foo[1]{1// output: 4 
                  PHP & Linux-Support uvm...

                  Kommentar


                  • #10
                    jedenfalls

                    also komischerweise funktionierts das auch, aber nur halb.

                    ich bekomme nur den ersten key gefüllt, also 0, der rest aus der textdatei wird irgendwie ausgelassen?

                    ausserdem iss doch ned zwingend notwendig $produktearray als variable zu deklarieren oder, mal austesten!

                    Kommentar


                    • #11
                      Re: jedenfalls

                      Zitat von derpustelnik
                      ausserdem iss doch ned zwingend notwendig $produktearray als variable zu deklarieren oder, mal austesten!
                      nein, aber es fördert die code-lesbarkeit und erleichtert späteres debugging.
                      undeklarierte variablen sind eine wichtige und absolut vermeidbare fehlerquelle.

                      Kommentar


                      • #12
                        übrigens:

                        PHP-Code:
                        <?php
                        $this
                        -> produktearray[] = array("kategorie" => $zeile[0],
                                
                        "bild" => $zeile[1],
                                
                        "headline" => $zeile[2],
                                
                        "text" => $zeile[3],
                                
                        "detailtext" => $zeile[4],
                                
                        "warenkorbtext" => $zeile[5],
                                
                        "preis" => $zeile[6]
                                );
                        ?>
                        wenn du übrigens eh objektorientiert arbeitest, dann lieber gscheit:

                        PHP-Code:
                        <?php
                        class Produkt {

                            public 
                        $kategorie;
                            public 
                        $bild;

                            public function 
                        __construct($kategorie$bild) {
                                
                        $this -> kategorie     $kategorie;
                                
                        $this -> bild          $bild;
                            }

                        }

                         [...]
                            function 
                        plehfunc(){
                                
                        ini_set('auto_detect_line_endings',        1);
                                
                        $fp = @fopen("produkte.dat","r");
                                
                        $produktearray = array();
                                while (
                        $z = @fgets($fp,512000)) {
                                    
                        $z explode("|",trim($z));
                                    
                        $this -> produktearray[] = new Produkt($z[0],$z[1]);
                                }
                            }

                        ?>
                        die anderen parameter wirst du selber einbauen können...

                        übrigens solltest du dir auch http://www.php.net/fgetcsv angucken, damit kannst du auf das explode verzichten.

                        Kommentar

                        Lädt...
                        X