Strings Array PHP5

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

  • Strings Array PHP5

    Hallo,
    ich habe folgendes Problem. Ich nutze die xampp-installation mit PHP5

    Code:
    Cannot use string offset as an array
    bei folgender Anweisung
    PHP-Code:
    $products_ids[$i]['id'
    So jetzt habe ich herausgefunden das es anscheinend eine Änderung in PHP 5 bei der String Behandlung gibt.
    Ich bin halt noch ein PHP Anfänger und weiß jetzt nicht wie ich meine variable $products_ids in ein Array umwandle.

    Kann mir da jemand helfen ?

    Gruß JR
    Spambot Falle
    Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

  • #2
    hi,

    auf zeichen eines strings greifst du mit $var{index} zu.

    was du allerdings mit "weiß jetzt nicht wie ich meine variable $products_ids in ein Array umwandle" meinst ist mir unklar.
    falls du aus einem string ein array machen willst schau mal nach explode, preg_split oder ähnlichem.

    gruss
    Sike

    Kommentar


    • #3
      Original geschrieben von sike
      auf zeichen eines strings greifst du mit $var{index} zu.
      das wird auch unter http://www.php.net/manual/de/languag....string.substr erwähnt, und explizit darauf hingewiesen, dass die schreibweise mit eckigen klammern seit PHP 4 missbilligt ist, was dann impliziert, dass sie in späteren versionen gar nicht mehr funktionieren wird.

      @JR-EWING: nächstes mal bitte selber im manual nachlesen - insb., wenn man schon jetzt auf PHP 5 umsteigt, sollte man das öfters mal machen.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Sorry,
        ich muss leider auf PHP 5 umstellen da mein Hoster im Oktober umstellt. Und mein Shop System funktioniert halt nicht stabil unter PHP 5.

        In PHP kenn ich mich leider nicht gut aus. Ich kann halt Java und leite mir da halt ein paar Sachen ab.

        Aber ich denke das ich mich falsch ausgedrückt habe.
        Ich habe ein Array das er aber irgendwie als String behandelt.

        $products_ids[$i]['id']


        Aber ich denke ich habe den Fehler gefunden.
        statt

        PHP-Code:
        $products_ids[$i]['id'
        sollte man

        PHP-Code:
        $products_ids['$i']['id'
        verwenden.

        Auszug aus dem Manuell.

        PHP-Code:
        // Funktioniert
        echo "Das funktioniert: {$arr[4][3]}";

        // Das ist aus dem gleichen Grund falsch
        // wie $foo[bar] außerhalb eines Strings falsch ist. Mit
        // anderen Worten, es funktioniert zwar, aber weil PHP
        // zunächst nach einer Konstanten namens foo sucht, gibt
        // es einen Fehler der Stufe E_NOTICE (undefined constant)
        // aus.
        echo "Das ist falsch: {$arr[foo][3]}";

        // Funktioniert. Benutzen Sie bei der Verwendung
        // mehrdimensionaler Arrays innerhalb von Strings immer
        // Klammern um die Arrays.
        echo "Das funktioniert: {$arr['foo'][3]}"
        Spambot Falle
        Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

        Kommentar


        • #5
          Original geschrieben von JR-EWING
          Aber ich denke ich habe den Fehler gefunden.
          nein. hast du nicht. denn wenn du $i in ' schreibst, wird es als string behandelt. also der index wäre dann wirklich $i. aber da $i ja 100%ig eine variable ist, deren inhalt du als index verwenden willst/musst, darfst du das nicht in ' schreiben.

          alles klar? oder war es zu verwirrend von mir (b|g)eschrieben?
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Hmmm, schade.
            und wie kann ich das dann umschreiben ?

            PHP 4
            $products_ids['$i']['id']

            PHP 5
            ?

            Gruß Jr
            Spambot Falle
            Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

            Kommentar


            • #7
              naja ... normal eben ....
              PHP-Code:
              $products_ids[$i]['id'
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Das bringt mich wieder zu meiner Ausgangssituation.....

                Cannot use string offset as an array
                Spambot Falle
                Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

                Kommentar


                • #9
                  dann zeige mal WIE du das Array einsetzst/anwendest oder die Codezeile, die die Fehlermeldung verursacht

                  Kommentar


                  • #10
                    und wenn du mal $products_ids VOR DER ERSTEN VERWENDUNG als array definierst?
                    PHP-Code:
                    $products_ids = array(); 
                    ansonsten können wir ohne etwas code nur weiterraten.
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Hallo,
                      man merkt das ich noch wenig Erfahrung habe.

                      Okay hier mal der Code

                      PHP-Code:
                       $products_ids='';
                       while ($products_id_data=xtc_db_fetch_array($products_id_query)) {
                              
                              $products_ids[]=array(
                                              'id'=>$products_id_data['products_id'],
                                              'name'=>$products_id_data['products_name']);
                              
                              } // while
                              
                              
                       ?>
                       <div class="pageHeading"><br><?php echo HEADING_PRODUCTS_CONTENT?><br></div>
                        <?php
                       xtc_spaceUsed
                      (DIR_FS_CATALOG.'media/products/');
                      echo 
                      '<div class="main">'.USED_SPACE.xtc_format_filesize($total).'</div></br>';
                      ?>      
                       <table border="0" width="100%" cellspacing="0" cellpadding="2">
                          <tr class="dataTableHeadingRow">
                           <td class="dataTableHeadingContent" nowrap width="5%" ><?php echo TABLE_HEADING_PRODUCTS_ID?></td>
                           <td class="dataTableHeadingContent" width="95%" align="left"><?php echo TABLE_HEADING_PRODUCTS?></td>
                      </tr>
                      <?php

                      for ($i=0,$n=sizeof($products_ids); $i<$n$i++) {
                       echo 
                      '<tr class="dataTableRow" onmouseover="this.className=\'dataTableRowOver\'" onmouseout="this.className=\'dataTableRow\'">' "\n";
                       
                       
                      ?>
                       <td class="dataTableContent_products" align="left"><?php echo $products_ids[$i]['id']; ?></td>
                       <td class="dataTableContent_products" align="left"><b><?php echo xtc_image(DIR_WS_CATALOG.'images/icons/arrow.gif'); ?><a href="<?php echo xtc_href_link(FILENAME_CONTENT_MANAGER,'pID='.$products_ids[$i]['id']);?>"><?php echo $products_ids[$i]['name']; ?></a></b></td>
                       </tr>
                      <?php
                      if ($_GET['pID']) {
                      // display content elements
                      und in den letzten Zeilen tritt dann der Fehler auf.
                      Vielleicht nur wenn in $products_ids nichts drin steht ?

                      Danke für eure Hilfe !!!
                      Spambot Falle
                      Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

                      Kommentar


                      • #12
                        Wenn

                        PHP-Code:
                        $products_ids='';
                        while (
                        $products_id_data=xtc_db_fetch_array($products_id_query)) {
                                
                                
                        $products_ids[]=array(
                                                
                        'id'=>$products_id_data['products_id'],
                                                
                        'name'=>$products_id_data['products_name']);
                                
                        // while 
                        leer ist, dann ist $products_ids ein String, wie definiert. Nimm lieber

                        PHP-Code:
                        $products_ids = array(); 
                        Später gibt count dann 1 zurück, da der Value kein array ist (siehe Anleitung). Beim Versuch, das erste Element von $products_ids aufzurufen gibt's dann den Fehler. Lass Dir mal nach dem Füllen des Arrays das Array mit var_dump($products_ids) ausgeben, dann siehst Du, wo es klemmt.
                        Happiness is an empty error log

                        Kommentar


                        • #13
                          Super,
                          Danke für die Hilfe
                          Spambot Falle
                          Wem das Wasser bis zum Hals steht, sollte nicht den Kopf hängen lassen.

                          Kommentar

                          Lädt...
                          X