Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Arrays; einzelne Ziffern aus Zahl auslesen

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

  • [Erledigt] Arrays; einzelne Ziffern aus Zahl auslesen

    Hey ihr!

    ich bin zurzeit mal wieder an nem kleinen Projekt am basteln ( www.retro-subtraddierung-in-0.de.tf )

    Und versuche dazu nen kleinen Rechner zu basteln aus langeweile.. =)

    Aber, häng' gerade an dem Problem, dass ich irgendwie die Ziffern der Zahl (z.B. 4210) einzeln in Arrays speichern müsste und dann anders-herum auslesen.. Das auslesen ist ja kein Problem..

    Aber habt ihr eine Idee, wie ich die Ziffern einzeln in Arrays speicher kann? Mit Explode bräuchte ich ja nen Delimiter... Aber dazwischen ist ja leider nichts..
    Man müsste das ganze ohne Delimiter machen können.. einfach nur mit Limit 1..? :S


    Ich hoffe ihr habt meine Idee bzw. mein Problem verstanden und habt Denkanstöße für mich! =D


    Lieben Gruß,
    Ritchey


  • #2
    preg_split. Anwendungsfall steht dort als Beispiel.

    Allerdings gibts auch strrev, keine Ahnung, wozu Du meinst, hier die Bestandteile im Array brauchen.

    Allgemeiner Tipp: Das Manual ist logisch nach Funktionsgruppen - Stringverarbeitung, Arrayfunktionen etc. angeordnet. Dort etwas zu suchen ist wirklich nicht zuviel verlangt.
    --

    „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


    • #3
      Eigentlich ist das nicht besonders schwer.
      Dazu musst du nur wissen, was floor() geteilt und % (Mod) bedeutet:

      PHP-Code:
      while($num != 0){
      $arr[] = $num 10;
      $num floor($num/10);

      Meine Lösung geht natürlich nur für Zahlen, nicht für Strings.
      [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
      [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

      Kommentar


      • #4
        Schätzungsweise nicht sonderlich performant, funktioniert aber:

        PHP-Code:
        function string2array($string)
        {
            
        $return = array();
            
        $string = (string) $string;
            
        $length strlen($string);

            for (
        $i 0$i $length$i++) {
                
        $return[] = $string[$i];
            }

            return 
        $return;
        }

        // Anwendung:
        $array string2array(4210); 
        Wobei das Array natürlich die Ziffern als Strings enthält. Diese können mit
        PHP-Code:
        $return[] = (int) $string[$i]; 
        auch als Integer gespeichert werden. Achtung: Führt bei Floats zu unerwünschten Ergebnissen.
        Programming today is a race between developers striving to build better idiot-proof programs, and the universe trying to produce better idiots. So far, the universe is winning.

        Kommentar


        • #5
          Sehr geil bitsnack

          Nach so ner (simplen - da hätt ich eigtl. selbst draufkommen können -.- ) Lösung hab' ich gesucht! Funktioniert perfekt! Dankee


          greetz,
          Dave | Ritchey

          Kommentar


          • #6
            Hast Du meinen Thread wahrgenommen? In beiden Fällen ein Einzeiler. Wozu der Umstand mit Schleifen?
            --

            „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


            • #7
              Ja habe ich nikosch -

              Das Problem ist, dass ich nicht wirklich durchsteige, wie ich es anwenden sollte.. Da nehm' ich doch lieber eine Idee die ich auch verstehe und die direkt funktioniert?

              Aber wenn du die Zeit hast, kannst du's gerne etwas genauer erläutern.. Bin immer für neues offen, aber verstehe deine preg_split version leider (noch) nicht wirklich..

              Kommentar


              • #8
                PHP-Code:
                $zahl 4711;
                $ziffern str_split((string) $zahl);
                var_dump($ziffern); 
                Den Cast auf String kann man sogar weglassen, wenn man mag - da str_split einen String als ersten Parameter erwartet, kümmert sich PHP automatisch darum.
                [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                Kommentar


                • #9
                  Ich habe den Code von ChrisvA mal eben betriebsfertig weitergebaut:

                  PHP-Code:
                  <?php

                  function ziffern_in_array($num)
                  {

                      
                  $arr = array();
                      while(
                  $num != 0){
                          
                  $arr[] = $num 10;
                          
                  $num floor($num/10);
                      }
                      return 
                  array_reverse($arr);
                  }

                  $zahl 12345;
                  $ziffern ziffern_in_array($zahl);

                  print_r($arr);


                  Edit - str_split kannte ich auch noch nicht. Eigentlich logisch, das so was fest eingebaut ist
                  [PHP]if ($var != 0) {
                  $var = 0;
                  }[/PHP]

                  Kommentar


                  • #10
                    PHP-Code:
                    $foo 123456;
                    $foo_rev strrev ($foo); // "654321" 
                    Das ist IMHO was Du benötigst. (Im ersten Schritt subtrahiert man die Zahl minus die gleiche Zahl rückwärts. (441 – 144))

                    Wie auch immer, ein Array bekommt man auch einfach
                    PHP-Code:
                    $foo 123456;
                    $foo_array preg_split ('//' $foo, -1PREG_SPLIT_NO_EMPTY); 
                    Keine Ahnung, was daran jetzt kompliziert ist. Wie oben geschrieben steht das Ganze im Manual als Beispiel unter preg_split. Den Link hatte ich sogar gepostet!

                    Beispiel #2 Eine Zeichenkette in einzelne Zeichen zerlegen
                    <?php
                    $str = 'Zeichenkette';
                    $zeichen = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
                    print_r($zeichen);
                    ?>
                    Wer lesen kann, ist klar im Vorteil.
                    --

                    „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

                    Lädt...
                    X