Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] finde & zeichen für preg_match nicht

Einklappen

Neue Werbung 2019

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

  • #16
    Ups, stimmt, habe mich durch die Beispiele im Handbuch verwirren lassen.
    [URL]http://hallophp.de[/URL]

    Kommentar


    • #17
      Super... von anfänglich 10 Code Zeilen sind jetzt nur noch 2 übrig, die genau das gleiche umsetzen wie meine anfänglichen 10.

      array_slice kannte ich bis dato noch garnicht. Klappt ziehmlich gut... auch mit den neuen durchsortieren.

      Vielen Dank für die vielen Verbesserungsvorschläge

      Kommentar


      • #18
        Es kann sinnvoll sein, sich anstelle von Tutorials auch mal eine "langweilige" Funktionsreferenz anzuschauen, um ein paar neue Funktionen kennenzulernen. Z.B. unter Übersicht Funktionsreferenz oder direkt im Manual.

        Gruß
        [URL]http://hallophp.de[/URL]

        Kommentar


        • #19
          Ich kenne auch nicht alle Array-Funktionen auswendig. Dazu sind es zu viele und die meisten davon sind auch recht speziell, sodass man die nicht unbedingt besonders häufig nutzt. Wenn ich also mal ein spezielles Array-Problem habe, schaue ich mir eigentlich immer zuerst einmal die Array-Funktionsübersicht an. Meistens werde ich da fündig.
          Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

          Kommentar


          • #20
            oki... pinned.


            Vllt. kann mir jm. noch einen Tip geben, wie ich nachfolgendes besser umsetzen könnte.


            Ich habe oben im Kopfbereich einige Länder als Boxen aufgeführt.
            Diese sollen (wenn aktiviert) den Backroundcolor in yellow bekommen.


            PHP-Code:
            <?php
                $count 
            count($zuordnung_reihenfolge);        // Zähle wieviel Einträge vorhanden sind
                
            $a=0;
                while(
            $count $a)
                {
                    
            $name =    $zuordnung_reihenfolge[$a];
                    if (
            $name == 'Europa')    {$Europa  'style="background-color:yellow;"';}
                    if (
            $name == 'Asien')    {$Asien   'style="background-color:yellow;"';}        
                
            $a++;
                }    
            ?>

            <a href="?<?php echo $URL?>&amp;Europa" <?php echo  $Europa?>  class="ankerlink">Europa</a>
            <a href="?<?php echo $URL?>&amp;Asien" <?php echo  $Asien?>  class="ankerlink">Asien</a>
            Sprich: Hinbekommen habe ich es mal wieder. Funktioniert auch ohne fehler.

            Nur finde ich das ganze in der PHP-Schleife ein wenig un-dynamisch umgesetzt.

            Eigendlich wollte ich es so umsetzen, das ein Variablenname selbst erzeugt wird. Leider klappt das nicht wirklich.


            PHP-Code:
                $count count($zuordnung_reihenfolge);        // Zähle wieviel Einträge vorhanden sind
                
            $a=0;
                while(
            $count $a)
                {
                    
            $name $zuordnung_reihenfolge[$a];            //$name hat nun z.B. Asien
                    
            '$'.$name 'style="background-color:yellow;"';  //Verknüpfe $name mit $ um eine neue Variable zu erzeugen

                
            $a++;
                } 
            Geht das irgendwie anders ?

            Kommentar


            • #21
              Du könntest ein Array verwenden.
              PHP-Code:
              <?php
              $lang 
              = array('europe' => '''asia' => '',);

              // ...

              while (...) {
                
              $name $zuordnung_reihenfolge[$a]; // europe, asia, usw.
                
              $lang[$name] = 'f00';
              }

              // ...
              ?>
              <a href="file.php"<?php echo ($lang['europe'] != '' ' style="background-color:#' $lang['europe'] . '"' ''); ?>>
                Europa
              </a>
              Ich würde allerdings gar keine Inline-Styles verwenden sondern besser die Klasse wechseln.

              Und arbeite immer mit aktiviertem error_reporting!
              Code:
              <?php
              error_reporting(E_ALL | E_STRICT);
              Funktioniert auch ohne fehler.
              darfst du nur behaupten, wenn du das Error-Level hochgeschraubt und die Fehlerausgabe aktiviert hast.
              [URL]http://hallophp.de[/URL]

              Kommentar


              • #22
                oh... ternären Operatoren. Mein Lieblingsthema **schrei+wegrenn**

                Unabhängig dessen würde ich mal ins blaue behaupten, das mir das nicht viel weiter bringt.
                Sicherlich estwas Professioneller... aber bei weiten länger.

                Besonders im nachfolgenden Bespiel würde ich z.Zt. auf 23 Zeilen (weitesgehend eqivalänte) Zeilen kommen.

                PHP-Code:
                    $buchstaben = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','w','z');

                        for ( 
                $x=$x<23$x++) {
                            echo 
                '<a href="?'.$URL.'&amp;'.$buchstaben[$x].'" class="ankerlink">.'.$buchstaben[$x].'*</a>';
                        } 
                Meiner Meinung nach irgendwie nicht Sinn der Sache.

                Kommentar


                • #23
                  soo.. ich müßte der Sache nun schon mal näher gekommen sein.

                  Zumindest bekomme ich im gewissen Sinne einen gelben Hintergrund:

                  PHP-Code:
                      $buchstaben = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','w','z');

                      
                  $count count($buchstaben);        // Zähle wieviel Einträge vorhanden sind
                      
                  for ( $x=$x<$count$x++) 
                      {   
                      
                  //echo $zuordnung_buchstaben[$x];
                          
                  if(in_array($zuordnung_buchstaben[$x],$buchstaben))
                          {
                              echo 
                  '<a href="?'.$URL.'&amp;'.$buchstaben[$x].'" style="background-color:yellow;" class="ankerlink">.'.$buchstaben[$x].'*</a>';
                          }
                          else
                          {
                              echo 
                  '<a href="?'.$URL.'&amp;'.$buchstaben[$x].'" class="ankerlink">.'.$buchstaben[$x].'*</a>'
                          }
                      } 
                  Problem dabei: Wenn ich z.B. den Buchstaben m angeklickt habe, dann markiert er mir das a.
                  Oder anders rum gesagt... er fängt von vorne an zu markieren. Habe ich z.B. 5 Buchstaben in der Variable: $zuordnung_buchstaben dann werden immer die !ersten! 5 Buchstaben markiert.

                  Kommentar


                  • #24
                    Stelle bitte das error_reporting auf E_ALL und display_errors auf on, dann solltest du ausreichend Meldungen bekommen, was du falsch machst.
                    [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                    Kommentar


                    • #25
                      Ich hab das schon drinne...
                      Code:
                      error_reporting(E_ALL ^ E_NOTICE);
                      ini_set('display_errors', 1);

                      Bekommen tu ich die ganze Zeit schon das.
                      Code:
                      Warning: array_count_values(): The argument should be an array in index2.php on line 55 Warning: Invalid argument supplied for foreach() in index2.php on line 56 index.php
                      Aber das hat nichts mit der falchen Ausgabe zu tun. Ich bin in Zeile 249 beginnend. Und da wird leider kein Fehler zurückgegeben.

                      Kommentar


                      • #26
                        Zitat von noop Beitrag anzeigen
                        Bekommen tu ich die ganze Zeit schon das.
                        Und wieso ist der Fehler dann noch nicht beseitigt, wenn du ihn „die ganze Zeit schon“ bekommst, und du das Ziel hast, ein mal irgendwann fehlerfreies Script zu erstellen ...?

                        Ran da, aber sofortigst.
                        Ich bin in Zeile 249 beginnend. Und da wird leider kein Fehler zurückgegeben.
                        Doch, ganz bestimmt, wenn du in $zuordnung_buchstaben fünf Werte drinstehen hast.
                        (Wie du die da drin stehen hast, hast du uns übrigens noch nicht gezeigt. Ist das ein Array, ein String, ...?)
                        [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                        Kommentar


                        • #27
                          Zitat von ChrisB Beitrag anzeigen
                          Doch, ganz bestimmt, wenn du in $zuordnung_buchstaben fünf Werte drinstehen hast.
                          (Wie du die da drin stehen hast, hast du uns übrigens noch nicht gezeigt. Ist das ein Array, ein String, ...?)
                          Ist ein array. Vergleichen tu ich aber einen einzelnen Wert... so wie die Manuell das auch will.

                          print_r($zuordnung_buchstaben);
                          Code:
                          (
                              [0] => m
                              [1] => j
                              [2] => p
                              [3] => v
                              [4] => z
                          )
                          Im Befehl: in_array übergebe ich den Wert aber einzeln

                          echo $zuordnung_buchstaben[0];
                          Code:
                          m

                          Ich habe eine Vermutung... aber ich denke mal, das das egal sein sollte.

                          Ich rufe das ganze innerhalb einer Schleife ja so auf:

                          PHP-Code:
                          if(in_array($zuordnung_buchstaben[$x],$buchstaben)) 
                          $x ist dabei der count aus $buchstaben. Ergibt im übrigen 23.
                          Was macht denn die Schleife wenn er den 6ten Durchlauf erreicht hat ?
                          Denn bei 5 Werten ist ja Feierabend.

                          Wenn ich aber... eingebe, dann bekomme ich nichts zurück.
                          PHP-Code:
                          echo $zuordnung_buchstaben[6]; 
                          Theoretisch vergleicht dann in_array "nichts" mit dem Inhalt "$buchstaben".
                          Das müßte ein FALSE zurückliefern, wo ich mich dann in der else schleife befinden müsste.


                          Aber wenn das so ist, dann müste mein Code korrekt sein.

                          Kommentar


                          • #28
                            Habs.

                            Als ich dir (bzw. auch mir) die Frage laut gestellt habe, ist der groschen gefallen.

                            PHP-Code:
                                $count count($buchstaben);        // Zähle wieviel Einträge vorhanden sind
                                
                            for ( $x=$x<$count$x++) 
                                {   
                                    if(
                            in_array($buchstaben[$x],$zuordnung_buchstaben))
                                    {
                                        echo 
                            '<a href="?'.$URL.'&amp;'.$buchstaben[$x].'" style="background-color:yellow;" class="ankerlink">.'.$buchstaben[$x].'*</a>';
                                    }
                                    else
                                    {
                                        echo 
                            '<a href="?'.$URL.'&amp;'.$buchstaben[$x].'" class="ankerlink">.'.$buchstaben[$x].'*</a>'
                                    }
                                } 
                            Lösung: Nicht $zuordnung_buchstaben durchlaufen lassen sondern die 23 Werte von $buchstaben.

                            Done.... danke fürs Zuhören (Und jetzt mach ich die PHP Warnings)

                            Kommentar


                            • #29
                              Zitat von noop Beitrag anzeigen
                              $x ist dabei der count aus $buchstaben. Ergibt im übrigen 23.
                              Was macht denn die Schleife wenn er den 6ten Durchlauf erreicht hat ?
                              Denn bei 5 Werten ist ja Feierabend.
                              Herzlichen Glückwunsch, das ist doch schon mal eine Erkenntnis.

                              Wenn ich aber... eingebe, dann bekomme ich nichts zurück.
                              Wenn du wo „...“ eingibst?
                              Genauer bitte, nicht immer so schwammig.

                              Was du mit obigem Code auf jeden Fall bekommst, sind Meldungen a la
                              Code:
                              Notice:  Undefined offset: 5 in [...]
                              ab dem sechsten Schleifendurchlauf.

                              Aber wenn das so ist, dann müste mein Code korrekt sein.
                              Dein Code ist schon allein deshalb absolut nicht korrekt, weil er zahlreiche Meldungen beim Zugriff auf nicht existente Werte liefert.

                              Also ist deine Logik falsch, und dann macht es wenig Sinn, sich noch mit weiteren „ja dann müsste doch aber folgendes passieren ...“-Überlegungen aufzuhalten.

                              Überlege dir logisch, was du wirklich prüfen willst - und dann setze es vernünftig um.
                              [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                              Kommentar

                              Lädt...
                              X