Ankündigung

Einklappen
Keine Ankündigung bisher.

$search[0] (range(0, 2, 1); // durchschleifen

Einklappen

Neue Werbung 2019

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

  • $search[0] (range(0, 2, 1); // durchschleifen

    Moin zusammen,
    ich bin neu hier, habe etwas PHP Erfahrung; aber ich schreibe keine Software wie z.b. Wordpress oder Drupal.
    Mein Webserver ist an (m)einer DSL Leitung auf Linux Basis. Ich bin ziemlich Linux erfahren (LPIC 1-3).
    Nun aber genug der selbst Beweihräucherung

    Meine PHP Erfahrung hat sich beim autodidaktischen Schreiben und Verwalten von PHP Seiten erprobt.
    Leider stehe ich jetzt vor einem Problem, bei dem ich kaum sagen kann wo ich mit PHP weiter ansetzen soll.

    Möglicherweise gehört meine Lösungssuche in das Forum für erfahrenere, was ich weniger gut einschätzen kann.
    Dennoch ..

    Zum eigentlichen Problem:
    In einer Funktion gibt es 2 Arrays, Eines davon hält Range Werte vor, welches ich durchsuchen will.
    Ich will damit eine Winkeltoleranz berücksichtigen.

    Das Array "$orb_pos[]" stellt dieses dar, das die Toleranzen beinhaltet. Bei Treffer soll der Wert aus "$orb_txt[]" ausgegeben werden.

    Ich habe einen $test Wert 44 und 2 Arrays in der nachfolgenden Form:

    PHP-Code:
    $test=44// kann geändert werden um z.b. auch negative Werte auszuspucken

    function transit_bezeichnung($test)
    {
    # Transitbezeichnung
     
    $orb_txt[0] = "Konjunktion"// 0
     
    $orb_txt[1] = "Halbsextil"// 30
     
    $orb_txt[2] = "Halbquadrat"// 45
     
    $orb_txt[3] = "Sextil"// 60
     
    $orb_txt[4] = "Pentagramm"// 72,5
     
    $orb_txt[5] = "Quadrat"// 90
     
    $orb_txt[6] = "Trigon"// 120
     
    $orb_txt[7] = "Ein Einhalb Quadrat"// 135
     
    $orb_txt[8] = "Opposition"// 180
     
    $orb_txt[9] = "Opposition"// -180
     
    $orb_txt[10] = "Ein Einhalb Quadrat"// -135
     
    $orb_txt[11] = "Trigon"// -120
     
    $orb_txt[12] = "Quadrat"// -90
     
    $orb_txt[13] = "Pentagramm"// -72.5
     
    $orb_txt[14] = "Sextil"// -60
     
    $orb_txt[15] = "Halbquadrat"// -45
     
    $orb_txt[16] = "Halbsextil"// -30
     
    $orb_txt[17] = "Konjunktion"// 0

    # Positive Orbit Toleranz z.b. (-2) - +2
     
    $orb_pos[0] = (range(021)); /* # Konjunktion 0 */
     
    $orb_pos[1] = (range(29311)); /* # Halbsextil 30 */
     
    $orb_pos[2] = (range(44461)); /* # Halbquadrat 45 */
     
    $orb_pos[3] = (range(59611)); /* # Sextil 60 */
     
    $orb_pos[4] = (range(71731)); /* # Pentagramm 72 */
     
    $orb_pos[5] = (range(89911)); /* # Quadrat 90 */
     
    $orb_pos[6] = (range(1191211)); /* # Trigon 120 */
     
    $orb_pos[7] = (range(1341361)); /* # Ein Einhalb Quadrat 135 */
     
    $orb_pos[8] = (range(1791801)); /* # Oppsition 180 */

    # Negative Orbit Toleranz 2 - (-2)
     
    $orb_pos[9] = (range(-179180, -1)); /* # Oppsition 180 */
     
    $orb_pos[10] = (range(-134, -136, -1)); /* # Ein Einhalb Quadrat 135 */
     
    $orb_pos[11] = (range(-119, -121, -1)); /* # Trigon 120 */
     
    $orb_pos[12] = (range(-89, -91, -1)); /* # Quadrat 90 */
     
    $orb_pos[13] = (range(-71, -73, -1)); /* # Pentagramm 72 */
     
    $orb_pos[14] = (range(-59, -61, -1)); /* # Sextil 60 */
     
    $orb_pos[15] = (range(-44, -46, -1)); /* # Halbquadrat 45 */
     
    $orb_pos[16] = (range(-29, -31, -1)); /* # Halbsextil 30 */
     
    $orb_pos[17] = (range(0, -2, -1)); /* # Konjunktion 0 */

    // print_r($orb_pos[9]); // hier würden die "range" werte des $orb_pos[9] ausgespuckt werden, wenn unkommentiert
    // echo "<br /><br />"; // HTML Abstandhalter weil ohne Maske
    // var_dump($orb_pos[9]); // auch hier würden die "range" Werte des $orb_pos[9] ausgespuckt werden, wenn unkommentiert
    // echo "<br /><br />"; // HTML Abstandhalter weil ohne Maske
    // echo "<br />$test<br />"; // 44

    foreach ($orb_pos as $pos_key => $pos_out)
     {
     if (
    in_array($test$pos_out))
      {
      echo 
    "Transit ausgabe: <br />";
      echo 
    $orb_txt[$pos_key] . "<br />";
      break;
      }
     else
      {
      echo 
    "Transit ausgabe: <br />";
      echo 
    $orb_txt[$pos_key] . "<br />";
      break;
      }
     }


    Der $test Wert müsste nach meinem Denken eigentlich einen Treffer wegen der PHP Anweisung "in_array" auslösen, bleibt aber bei $orb_pos[0] stehen.

    Mit anderen Arrays, die ich bisher ohne Berechnungen erstellt habe, konnte ich die Arrays mit dieser Methode immer gut "durchschleifen".

    Hier allerdings stosse ich an meine Verständnisgrenze mit PHP.

    Hat jemand eine Idee für mich?

    Danke

  • #2
    bitte verbessere deine php opening tag und nutze einrückungen.
    wilkommen hier.
    LPIC 1-3
    alle wirklich erfahrenen *nixe welceh mir über den weg gelaufen sind, weigern sich sowas zu machen , kann aber auch nur mein window sein.

    Kommentar


    • #3
      Zitat von tomBuilder Beitrag anzeigen
      [...] [Bitte] verbessere [Deine] php opening [Tags] und nutze [Einrückungen].
      [...] *nixe [welche] mir über den [Weg] gelaufen sind, weigern sich sowas zu machen [.] [Kann] aber auch mein [Windows] sein.[...]
      Hat das System kaputtgemacht.
      Als ich mein Scripsel mit Tabs nachverschlimmbessern wollte wurden die aktiven Buttons "Abbrechen, Vorschau oder, Antworten" aktiviert.

      Auch Windoof schaltet bei Benutzung der "Tab" Taste durch die gegebenen Webseiten Optionen durch.
      Evtl sollte ich normale "Space" Distance Holder verwenden?

      In NON PHP Foren steht alles zwischen "Code Tags <>"

      OK, nach dem Vierten mal aufhübschen meines Kots mit "SPACE" , wird alles wieder auf Anfang gesetzt, so wie es jetzt innerhalb der Foren [PHP] Tags steht..

      ;(

      Danke für Deine hilfreiche erste Antwort.

      Deine Orthografie lässt sehr zu wünschen übrig.

      Kommentar


      • #4
        Lass das else weg, dann sollte es durchlaufen, oder du nimmst das break im else-Teil raus.
        range braucht den dritten Parameter nicht, wenn die Schrittweite auf 1 bleibt.

        Insgesamt aber sehr umständllich was du da machst.

        Kommentar


        • #5
          PHP-Code:


          $test
          =44// kann geändert werden um z.b. auch negative Werte auszuspucken

          function transit_bezeichnung($test)
          {
          # Transitbezeichnung
              
          $orb_txt[0] = "Konjunktion"// 0
              
          $orb_txt[1] = "Halbsextil"// 30
              
          $orb_txt[2] = "Halbquadrat"// 45
              
          $orb_txt[3] = "Sextil"// 60
              
          $orb_txt[4] = "Pentagramm"// 72,5
              
          $orb_txt[5] = "Quadrat"// 90
              
          $orb_txt[6] = "Trigon"// 120
              
          $orb_txt[7] = "Ein Einhalb Quadrat"// 135
              
          $orb_txt[8] = "Opposition"// 180
              
          $orb_txt[9] = "Opposition"// -180
              
          $orb_txt[10] = "Ein Einhalb Quadrat"// -135
              
          $orb_txt[11] = "Trigon"// -120
              
          $orb_txt[12] = "Quadrat"// -90
              
          $orb_txt[13] = "Pentagramm"// -72.5
              
          $orb_txt[14] = "Sextil"// -60
              
          $orb_txt[15] = "Halbquadrat"// -45
              
          $orb_txt[16] = "Halbsextil"// -30
              
          $orb_txt[17] = "Konjunktion"// 0

          # Positive Orbit Toleranz z.b. (-2) - +2
              
          $orb_pos[0] = (range(021)); /* # Konjunktion 0 */
              
          $orb_pos[1] = (range(29311)); /* # Halbsextil 30 */
              
          $orb_pos[2] = (range(44461)); /* # Halbquadrat 45 */
              
          $orb_pos[3] = (range(59611)); /* # Sextil 60 */
              
          $orb_pos[4] = (range(71731)); /* # Pentagramm 72 */
              
          $orb_pos[5] = (range(89911)); /* # Quadrat 90 */
              
          $orb_pos[6] = (range(1191211)); /* # Trigon 120 */
              
          $orb_pos[7] = (range(1341361)); /* # Ein Einhalb Quadrat 135 */
              
          $orb_pos[8] = (range(1791801)); /* # Oppsition 180 */

          # Negative Orbit Toleranz 2 - (-2)
              
          $orb_pos[9] = (range(-179180, -1)); /* # Oppsition 180 */
              
          $orb_pos[10] = (range(-134, -136, -1)); /* # Ein Einhalb Quadrat 135 */
              
          $orb_pos[11] = (range(-119, -121, -1)); /* # Trigon 120 */
              
          $orb_pos[12] = (range(-89, -91, -1)); /* # Quadrat 90 */
              
          $orb_pos[13] = (range(-71, -73, -1)); /* # Pentagramm 72 */
              
          $orb_pos[14] = (range(-59, -61, -1)); /* # Sextil 60 */
              
          $orb_pos[15] = (range(-44, -46, -1)); /* # Halbquadrat 45 */
              
          $orb_pos[16] = (range(-29, -31, -1)); /* # Halbsextil 30 */
              
          $orb_pos[17] = (range(0, -2, -1)); /* # Konjunktion 0 */

          // print_r($orb_pos[9]); // hier würden die "range" werte des $orb_pos[9] ausgespuckt werden, wenn unkommentiert
          // echo "<br /><br />"; // HTML Abstandhalter weil ohne Maske
          // var_dump($orb_pos[9]); // auch hier würden die "range" Werte des $orb_pos[9] ausgespuckt werden, wenn unkommentiert
          // echo "<br /><br />"; // HTML Abstandhalter weil ohne Maske
          // echo "<br />$test<br />"; // 44

              
          foreach ($orb_pos as $pos_key => $pos_out)
              {
                  if (
          in_array($test$pos_out))
                  {
                      echo 
          "Transit ausgabe: <br />".PHP_EOL;
                      echo 
          $orb_txt[$pos_key] . "<br />".PHP_EOL;
                      break;
                  }
              }
          }

          transit_bezeichnung($test); 
          Gibt bei mir
          HTML-Code:
          Transit ausgabe: <br />
          Halbquadrat<br />
          aus. Wäre das richtig?
          Tutorials zum Thema Technik:
          https://pilabor.com
          https://www.fynder.de

          Kommentar


          • #6
            Zitat von BeRoot Beitrag anzeigen

            Hat das System kaputtgemacht.
            Als ich mein Scripsel mit Tabs nachverschlimmbessern wollte wurden die aktiven Buttons "Abbrechen, Vorschau oder, Antworten" aktiviert.

            Auch Windoof schaltet bei Benutzung der "Tab" Taste durch die gegebenen Webseiten Optionen durch.
            Evtl sollte ich normale "Space" Distance Holder verwenden?

            In NON PHP Foren steht alles zwischen "Code Tags <>"

            OK, nach dem Vierten mal aufhübschen meines Kots mit "SPACE" , wird alles wieder auf Anfang gesetzt, so wie es jetzt innerhalb der Foren [PHP] Tags steht..

            ;(

            Danke für Deine hilfreiche erste Antwort.

            Deine Orthografie lässt sehr zu wünschen übrig.
            [PHP} != [PHP]

            der restliche text ergibt für mich wenig sinn.
            und danke, daß du mir schreibst, was jeder hier schon bemerkt hat.
            Mein Tip, setze mich auf Ignorieren.

            Kommentar


            • #7
              Zitat von tomBuilder Beitrag anzeigen

              [PHP[...] ] [...] != [PHP]

              tomBuilder
              Mit nur ein wenig mehr Disziplin...

              Ich schenk Dir auf jeden Fall eine abschliessende, rechteckige Klammer um unsere gemeinsamen orthographischen Ungereimtheiten auszugleichen.

              :r



              protestix
              Wie könnte ich das sonst lösen?
              Ich bin kein Programmierer. Meine (eigene) einfache Lösung zeigt, denke ich, den Level an ..


              Andreas
              Danke für die konstruktive Hilfe.
              Ich will das noch testen und gebe dann bescheid.


              Danke

              Kommentar


              • #8
                immerhin hast du es endlich geschafft die PHP tags richtig zu setzen.
                ich nehme an das ist die Disziplin welche du von Dir forderst und nun endlich auch zeigst

                Kommentar


                • #9
                  Wenn du einfach nur den absolut Wert deiner übergebenen Variable nimmst kannst du dir 50 Prozent deines Codes und Arrays sparen, da die negativen Werte ja eh gleich sind

                  Als nächstes, falls du es wirklich so statisch lassen willst: vergib direkt in dem obs_txt array schon aussagekräftige Keys. Anstatt obs_text[5]=Quadrat kannst du auch direkt obs_text[90]=Quadrat nehmen. Dann musst du in deiner Funktion lediglich überprüfen ob es im Obs_text[] array einen Key gibt der zur übergebenen Variable passt (plus eins davor oder eins danach). Fertig. 90 Prozent code gespart

                  Kommentar


                  • #10
                    Moin zusammen,
                    nach ein wenig Bastelarbeit heute früh, hat das auch funktioniert. Die Funktion spuckt, wenn positive Werte eingegeben werden, den richtigen Text dazu aus. Mit negativ Werten gibts ein Problem. Allerdings will ich mal schauen ob ich die negativen Werte überhaupt benötige.

                    Dsdxb
                    Ich mach damit mal ein Versuch und schau wie weit ich komme.

                    Danke

                    Kommentar


                    • #11
                      Zitat von BeRoot Beitrag anzeigen
                      protestix
                      Wie könnte ich das sonst lösen?
                      Mit Näherungswerten
                      PHP-Code:
                      <?php

                      $orb_txt 
                      = ["Konjunktion" => 0,
                                  
                      "Halbsextil" => 30,
                                  
                      "Halbquadrat" => 45,
                                  
                      "Sextil" => 60,
                                  
                      "Pentagramm" => 72.5,
                                  
                      "Quadrat" => 90,
                                  
                      "Trigon" => 120,
                                  
                      "Ein Einhalb Quadrat" => 135,
                                  
                      "Opposition" => 180];

                      $test = -48;

                      $closest null;
                      $pos null;
                      $search abs($test);

                      foreach (
                      $orb_txt as $key => $item) {
                        if (
                      $closest === null || abs($search $closest) > abs($item $search)) {
                           
                      $closest $item;
                           
                      $pos $key;
                        }
                      }

                      echo 
                      "Transit ausgabe: " $pos "<br>";
                      echo 
                      "Abweichung: " . ($search-$closest) . " Grad";
                      Im foreach wird der nächstliegende Wert bestimmt und in $closest abgelegt. Den Key merken wir uns in $pos.
                      Bei der Ausgabe wird nur der gefundene Wert vom gesuchten Wert subtrahiert um die Abweichung zu erhalten. So kannst selbst bestimmen bis zu welcher Abweichung es zutreffen oder angezeigt werden soll.

                      Kommentar


                      • #12
                        Oder noch eleganter... :P (kleiner Scherz )

                        PHP-Code:
                        <?php

                        $test 
                        = -46;

                        $orb_txt = [ => "Konjunktion",
                            
                        30 => "Halbsextil",
                            
                        45 => "Halbquadrat",
                            
                        60 => "Sextil",
                            
                        72 => "Pentagramm",
                            
                        90  => "Quadrat",
                            
                        120 => "Trigon",
                            
                        135 => "Ein Einhalb Quadrat",
                            
                        180 => "Opposition"];

                        $valueAbs abs($test);

                        $result array_intersect_key($orb_txt, [    $valueAbs-=> '',
                                                                    
                        $valueAbs => '',
                                                                    
                        $valueAbs+=> '']);


                        if (!empty(
                        $result)) {
                            
                        $pos array_key_first($result);
                            echo 
                        "Transit ausgabe: " $result[$pos] . "<br>";
                            echo 
                        "Abweichung: " abs($valueAbs-$pos) . " Grad";
                        } else {
                            echo 
                        "not found";
                        }
                        oder so:

                        PHP-Code:
                        <?php

                        $test 
                        = -51;
                        $maxRange 5;

                        $orb_txt = [ => "Konjunktion",
                            
                        30 => "Halbsextil",
                            
                        45 => "Halbquadrat",
                            
                        60 => "Sextil",
                            
                        72 => "Pentagramm",
                            
                        90  => "Quadrat",
                            
                        120 => "Trigon",
                            
                        135 => "Ein Einhalb Quadrat",
                            
                        180 => "Opposition"];

                        $valueAbs abs($test);

                        array_walk($orb_txt, function($item$key) use ($valueAbs$maxRange)
                        {
                            if ( 
                        abs($key-$valueAbs) <= $maxRange ) {
                                echo 
                        "Transit ausgabe: " $item "<br>";
                                echo 
                        "Abweichung: " abs($key-$valueAbs) . " Grad";
                            }
                        });

                        Kommentar


                        • #13
                          Viele Wege führen zum Ziel.

                          Kommentar


                          • #14
                            Ja klar. War auch nur ein Spass. Ich wollte eigentlich nur selbst wissen ob es geht wie ich mir das vorstelle.
                            Ich hab bis eben auch noch nicht mit array_walk gearbeitet, wollte es aber unbedingt mal ausprobieren Ich hab die Frage eher fuer mich genutzt :P

                            Kommentar


                            • #15
                              Moin zusammen,
                              wenn ich sehe, wie es geht, kann auch ich meinen alten Lösungsweg verlassen. Ansonsten Eiere ich immer um den gleichen Lösungsweg herum.

                              Der hat sich bewährt und funktioniert. Bis auf naja .. gestern wo ich nach 2 Wochen rumprobieren dachte, such doch mal nach professioneller Hilfe



                              Über "array_walk" bin ich auch drübergestolpert.
                              Das meinerseitige Lesen der PHP Manuals zu so manchem Problem das man sich so schafft, bringt mich wenig weiter wenn ich kaum in der Lage dazu bin die Lösungswege zu verstehen bzw. das gelesene auf eigene Probleme zu übertragen.

                              Auf jeden Fall ein elegant schlanker Kot, welcher die Dateigröße um mindestens 50% minimiert.

                              protestix
                              Dsdxb

                              Danke euch beiden

                              Kommentar

                              Lädt...
                              X