Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mehrere Array's in foreach

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Mehrere Array's in foreach

    Hallo ...
    Ich programmiere zur Zeit an einem kleinen Chat für meine Projekte, nur das Problem sind gerade die Smileys =/
    Ich habe folgende Array's mühevoll für die Smileys zusammengebastelt:
    Code:
    $search  = array(array(">:-P", ">:P", ">:-p", ">:p"), ... ... ... array(";-)", ";)"));
    $replace = array("Angry-Tongue.png",                  ... ... ... "Wink.png"        );
    Ich habe mir sehr viel Mühe beim zusammenstellen des Array's gegeben, nur leider komme ich mit der foreach-Schleife nicht weiter...
    Es sollten ja beide Array's gleichzeitig in das foreach eingeschleust werden, aber wie mache ich das nun? Und gibt es dafür vl. ein kleines example, wie ich die Daten dann wieder auslesen kann?

    Liebe Grüße,
    PCFreund
    webmasterlounge
    Die deutsche Webmaster-Community


  • #2
    Wozu zwei Arrays? Einer tut's auch.

    PHP-Code:
    $smilies = array (">:-P" => "Angry-Tongue.png"";-)" => "Wink.png"); 
    Damit hat sich auch deine Frage erledigt

    Kommentar


    • #3
      Und str_replace nimmt auch Arrays als Parameter ...

      Kommentar


      • #4
        Zitat von ChrisB Beitrag anzeigen
        Was willst du denn überhaupt mit foreach?

        str_replace nimmt auch Arrays als ersten und zweiten Parameter ...
        Auch Array's in Array's ?
        Also $array = array(array("1", "2"), array("3", "4")); ?

        @Trainmaster:
        Nein tut es nicht, weil ich dann jeden Smiley 10 mal verlinken kann
        Code:
        ;) -> test.png
        ;-) -> test.png
        usw...

        Aber: Ihr habt mich beide auf die Idee gebracht, eine for schleife zu nutzen, die dann jeweils einen Key Abfragt, und für das Array im Array eine foreach schleife bei jedem durchlafen der for Schleife durchläuft ...
        Das ganze ist dann so realisiert:

        Code:
        for($key=0;$key<count($search);$key++)
        {
        	foreach($search[$key] as $searchkey)
        	{
        		$message = str_replace($searchkey, '<img src="/projects/chat/emoticons/'.$replace[$key].'.png" alt="'.$searchkey.'" title="'.$searchkey.'" />', $message);
        		unset($searchkey);
        	}
        }
        webmasterlounge
        Die deutsche Webmaster-Community

        Kommentar


        • #5
          @Trainmaster:
          Nein tut es nicht, weil ich dann jeden Smiley 10 mal verlinken kann
          Tja, dann musst Du es eben tun. Dass zwei verschieden großé Arrays keine eindeutige ABbildung ergeben, muss DIr doch klar sein.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            [Off-Topic]
            Hättest Du vl. noch 'nen Wunsch?
            [/Off-Topic]

            [Erledigt]
            webmasterlounge
            Die deutsche Webmaster-Community

            Kommentar


            • #7
              Zitat von DJ_RhoxxZ Beitrag anzeigen
              Auch Array's in Array's ?
              Nö. Aber wenn du dein Array in der Form
              PHP-Code:
              array('Angry-Tongue.png' => array(">:-P"">:P"">:-p"">:p"), ...) 
              aufbauen würdest, bräuchtest du nur eine foreach-Schleife.

              Kommentar


              • #8
                Ne, dann bräuchte ich verschachtelte foreach Schleifen ...
                Die erste geht jeweils Angry-Tongie.png => array() durch und die zweite liest das Smiley array aus ...
                webmasterlounge
                Die deutsche Webmaster-Community

                Kommentar


                • #9
                  PHP-Code:
                  for($key=0;$key<count($search);$key++)
                  {
                      foreach(
                  $search[$key] as $searchkey)
                      {
                          
                  $message str_replace($searchkey'<img src="/projects/chat/emoticons/'.$replace[$key].'.png" alt="'.$searchkey.'" title="'.$searchkey.'" />'$message);
                          unset(
                  $searchkey);
                      }

                  Tipp: kein Count im Schleifenkopf

                  $foo = count($bar);
                  und dann $foo verwenden

                  Kommentar


                  • #10
                    Quick and dirty, ich würd es folgendermaßen gestalten:

                    PHP-Code:
                    $smilies = array("Angry-Tongue.png" => array(">:-P"">:P"">:-p"">:p"), "Wink.png" => array(";)"";-)"));

                    foreach (
                    $smilies as $key => $value) {
                        
                    $title str_replace("-"" "substr($key0, -4));
                        
                    $pattern '<img src="/projects/chat/emoticons/'.$key.'" alt="'.$value[0].'" title="'.$title.'" />';
                        
                    $message str_replace($value$pattern$message);

                    Vorteil: Solange deine Smiley-Bilder einheitlich abgespeichert werden, kannst du zugleich ein "schönes" title-Attribut generieren.

                    Nachteil: Das alt-Attribut ist auf den ersten Wert des Smiley-Arrays festgelegt, sozusagen standardisiert. Aber das ist nicht weiter schlimm, weil in aller Regel schließlich das Bild angezeigt werden soll.

                    Kommentar


                    • #11
                      @Threadersteller: schau dir mal count im Schleifenkopf = PFUI!!! | ragtek an

                      Kommentar


                      • #12
                        Zitat von DJ_RhoxxZ Beitrag anzeigen
                        Ne, dann bräuchte ich verschachtelte foreach Schleifen ...
                        Nein, bräuchtest du nicht.
                        Die erste geht jeweils Angry-Tongie.png => array() durch und die zweite liest das Smiley array aus ...
                        Noch mal: str_replace kann auch mit Arrays was fangen ...

                        Kommentar

                        Lädt...
                        X