Zahlen in einer For-Schleife durchlaufen lassen und überprüfen – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 14:22:39 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757605#m1757605 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757605#m1757605 <p>Hallo Zusammen,</p> <p>gerne möchte ich diese If-Überprüfungen in einer Schleife automatisch durchlaufen lassen. Danke für eure Denkanstösse.</p> <p>Gruss Miky</p> <pre><code class="block">$zahl1_oben = "30"; $zahl1_unten = "10"; $zahl2_oben = "40"; $zahl2_unten = "20"; $zahl3_oben = "35"; $zahl3_unten = "15"; $zahl4_oben = "22"; $zahl4_unten = "5"; $zahl5_oben = "45"; $zahl5_unten = "22"; if($zahl1_oben < $zahl2_oben) { // zahl ist höher, also nächste zahlen überprüfen echo "höher <br/>"; echo "nächste überprüfung...<br/>"; } else { if($zahl1_unten < $zahl2_unten) { // die zahl ist nicht tiefer echo "nicht tiefer <br/>"; if($zahl1_oben < $zahl2_oben) { // zahl ist höher, also nächste zahlen überprüfen // z.b = if($zahl4_oben < $zahl5_oben) echo "höher 2.0 <br/>"; echo "nächste überprüfung...<br/>"; } } else { // die zahl ist tiefer echo "zahl ist tiefer <br/>"; if($zahl1_oben < $zahl2_unten) { // treffer echo "treffer <br/>"; } else { // kein treffer, warten bis es einen treffer gibt. echo "kein treffer <br/>"; } } } </code></pre> <p>// Überprüfungen von den 4 Ifs</p> <ol> <li>if($zahl1_oben < $zahl2_oben)</li> </ol> <p>Ist höher, also nächste überprüfungung hier geht man zu den nächsten zahlen, sprich if($zahl2_oben < $zahl3_oben), if($zahl3_oben < $zahl4_oben), if($zahl4_oben < $zahl5_oben)... usw.</p> <ol> <li>if($zahl2_oben < $zahl3_oben) Zahl ist tiefer</li> </ol> <p>also weiter zum 4. if</p> <ol start="4"> <li>if($zahl2_oben < $zahl3_oben) = kein treffer</li> </ol> <p>solange überprüfen bis eine höhere zahl kommt</p> <p>if($zahl2_oben < $zahl4_oben) = kein treffer</p> <p>if($zahl2_oben < $zahl5_oben) = treffer!</p> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 14:32:46 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757606#m1757606 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757606#m1757606 <p>Hello,</p> <p>Du willst also den größten bzw. kleinsten Wert finden und eventuell noch dessen Position?</p> <p>Dann ist das eine Aufgabe für ein Array, die <code>foreach()</code>-Anweisung und ein zusätzliches Zwischspeicherelement. Für den Vergleich gibt es außerdem noch die Funktionen <code>min()</code> und <code>max()</code>.</p> <p>Werte, die einen gemeinsamen Bezug zueinander haben, sollte man nicht in Skalaren ("losen Variablen") speichern, sondern in Arrays.</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 14:42:22 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757607#m1757607 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757607#m1757607 <p>Hallo Miky,</p> <p>gerne möchtest Du uns erklären, was Du eigentlich beabsichtigst.</p> <p>Und du solltest - sofern es keine zwingenden Gründe für das Gegenteil gibt - Zahlen als Zahlen verarbeiten und nicht als Strings. Also 30 statt "30". Warum? Für dich am wichtigsten ist: Der Vergleich <code>if ("5" < "15")</code> ergibt FALSCH. Dagegen ergibt <code>if (5 < 15)</code> wunschgemäß WAHR.</p> <p>Dein Code-Fragment ist offenbar nur ein Teil für die beiden ersten Zahlenpaare.</p> <p>Aber: Was bedeuten diese Zahlenpaare, was ist der Sinn der Vergleiche? Deine Erklärung dessen, was Du tun willst, ist ohne Kenntnis deiner Absichten völlig unverständlich. Es ist unklar, wann Du benachbarte Paare (z.B. zahl1/zahl2) oder weiter entfernte Paare (z.B. zahl2/zahl4) vergleichen willst.</p> <p>Das grundsätzliche Mittel der Wahl für Aufgaben dieser Art ist das <a href="" rel="noopener noreferrer">https://www.php.net/manual/de/language.types.array.phpArray</a>. Die Erklärung auf php.net ist eher eine Expertenversion. Unser Wiki enthält einen rudimentären PHP Teil, wo aber auch eine <a href="https://wiki.selfhtml.org/wiki/PHP/Tutorials/Einstieg/Arrays" rel="nofollow noopener noreferrer">Erklärung zu Arrays</a> drin ist.</p> <pre><code class="block language-php"><span class="token variable">$zahlen</span> <span class="token operator">=</span> <span class="token keyword">ARRAY</span><span class="token punctuation">(</span> <span class="token keyword">ARRAY</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"oben"</span> <span class="token operator">=</span> <span class="token number">30</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"unten"</span> <span class="token operator">=></span> <span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token keyword">ARRAY</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"oben"</span> <span class="token operator">=></span> <span class="token number">40</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"unten"</span> <span class="token operator">=></span> <span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token keyword">ARRAY</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"oben"</span> <span class="token operator">=></span> <span class="token number">35</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"unten"</span> <span class="token operator">=></span> <span class="token number">15</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token keyword">ARRAY</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"oben"</span> <span class="token operator">=></span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"unten"</span> <span class="token operator">=></span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token keyword">ARRAY</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"oben"</span> <span class="token operator">=></span> <span class="token number">45</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"unten"</span> <span class="token operator">=></span> <span class="token number">22</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Das Komma nach dem letzten ARRAY(...) sieht falsch aus, das war auch mal so, aber mittlerweile lässt PHP das zu, damit man nicht beim Hinzufügen oder Löschen von Zeilen in solchen Konstrukten ständig auf die Kommas aufpassen muss.</p> <p>In neueren PHP Versionen (ab 5.6, meine ich) kann man das umständliche ARRAY auch durch eckige Klammern ersetzen:</p> <pre><code class="block language-php"><span class="token variable">$zahlen</span> <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">[</span> <span class="token string double-quoted-string">"oben"</span> <span class="token operator">=></span> <span class="token number">30</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"unten"</span> <span class="token operator">=></span> <span class="token number">10</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token string double-quoted-string">"oben"</span> <span class="token operator">=></span> <span class="token number">40</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"unten"</span> <span class="token operator">=></span> <span class="token number">20</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token string double-quoted-string">"oben"</span> <span class="token operator">=></span> <span class="token number">35</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"unten"</span> <span class="token operator">=></span> <span class="token number">15</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token string double-quoted-string">"oben"</span> <span class="token operator">=></span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"unten"</span> <span class="token operator">=></span> <span class="token number">5</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token punctuation">[</span>oben<span class="token string double-quoted-string">" => 45, "</span>unten" <span class="token operator">=></span> <span class="token number">22</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> </code></pre> <p>Das Array enthält nun Einträge mit den Indexen 0-4 (statt 1-5), und zu kommst an den dritten "unten"-Wert so heran: <code>$zahlen[2]["unten"]</code>. Das sieht erstmal umständlicher aus, aber an Stelle von 2 oder "unten" kannst du auch Variablen einsetzen und bist damit flexibel.</p> <p>Was man Dir an Code vorschlagen kann, hängt nun von deinen Absichten ab. Erzähl mal.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - clusi </div> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 15:37:57 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757609#m1757609 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757609#m1757609 <p>Bedenke, daß es zu einem if nur ein else geben kann. Wenn Du eine Kontrollstruktur jedoch erweitern willst, brauchst Du elsif. MFG</p> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Wed, 11 Sep 19 08:27:46 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757639#m1757639 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757639#m1757639 <p>Liebe(r) Miky,</p> <p>ist denn in den Wertepaaren <code>unten</code> immer niedriger als <code>oben</code>?<br> Mir scheint, dass Du immer das relative Minimum zwischen zwei relativen Maxima suchst. Stimmt das?</p> <p>Da könnte man ja glatt die Min/Max-Werte von <a href="http://bitworks.de/sensor/" rel="nofollow noopener noreferrer">Toms Wetterdaten</a> als Beispiel nehmen. Kennzeichne Dir in der Liste mal die relativen Maxima und such dann dazwischen die relativen Minima. Ist es das, was Du willst?</p> <p>Spirituelle Grüße<br> Euer Robert</p> <div class="signature">-- <br> Möge der Forumsgeist ewig leben! </div> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 15:15:40 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757608#m1757608 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757608#m1757608 <p>Vielen Dank Zusammen</p> <p>Also ich möchte folgendes. Die Reihenfolge ist auch wichtig immer von oben nach unten im Array, sprich $zahlen[0] $zahlen[1] $zahlen[2] ....</p> <pre><code class="block">$zahlen = [ [ "oben" => 30, "unten" => 10 ], [ "oben" => 40, "unten" => 20 ], [ "oben" => 35, "unten" => 15 ], [ "oben" => 22, "unten" => 5 ], [ "oben" => 45, "unten" => 22 ], ]; </code></pre> <ol> <li> <p>Zuerst muss ich mit den ersten beiden Zahlen ermittel welche die höchste ist "oben" $zahlen[0]["oben"] < $zahlen[1]["oben"], in diesem Fall die 40.</p> </li> <li> <p>Jetzt muss zuerst die Zahl von dem Array $zahlen[1]["unten"] also die 20 einmal mit den nachfolgenden Zahlen unterschritten werden. Mit der 3. Zahl passiert es $zahlen[2]["unten"] gleich die 15</p> </li> <li> <p>Und jetzt wenn mit der 4., 5., .6 Zahl usw. die 40, $zahlen[1]["oben"] überschritten wird, habe ich ein Treffer. Mit der 4. passiert dies noch nicht weil "oben" 22, aber mit der 5. $zahlen[4]["oben"] die 45.</p> </li> </ol> <p>Jetzt weiss ich nur noch nicht wie ich das in einem foreach automatisieren kann.</p> <p>Miky</p> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 16:00:12 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757611#m1757611 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757611#m1757611 <p>Hallo Miky,</p> <p>du hast schon viel gewonnen, wenn Du es schaffst, deine Aufgabenstellung nicht in Form eines Beispiels zu formulieren, sondern in Form einer "Wenn dies, dann das" Beschreibung. Dabei fällt dann auch auf, ob es "dies" Situationen gibt, zu denen man sich noch kein "das" überlegt hat.</p> <p>Da Du nicht beschreibst, was Du tun willst, sondern nur, wie Du es tun willst, kann ich mir etliche der folgenden Fragen nicht selbst beantworten.</p> <p>Was ich im Moment aus deiner Beispielbeschreibung herauslese, ist:</p> <p>Suche Dir von den beiden ersten Array-Einträgen den mit dem größeren "oben" Wert. Dessen Index sei $i.</p> <p>Frage: Was ist, wenn beide gleich sind? Das ist nicht egal, denn sie können ja gleiche "oben" Werte haben, aber verschiedene "unten" Werte.</p> <p>Suche ab Index 2 einen Eintrag, dessen "unten" Eintrag kleiner ist als der von Zeile $i. Der Index dieses Eintrags sei $j.</p> <p>Frage: Was ist, wenn $i nicht 1 ist, wie im Beispiel, sondern 0. Müsste man dann auch ab Index 2 suchen? Oder ab Index 1?</p> <p>Prüfe für den Rest des Arrays, ob die "oben" Werte größer sind als der "oben" Wert am Index $i.</p> <p>Frage: Was ist "Rest"? Der Index ab <code>$j + 1</code>?</p> <p>Was dann noch zu klären wäre, ist: Weißt Du, wie Du deine Zahlenpaare aus der Datenquelle ordentlich ins Array hineinbekommst?</p> <p>Ein Hinweis noch: <code>foreach</code> wird Dir vermutlich nicht helfen. Damit werden immer alle Einträge des Arrays verarbeitet. Du musst aber ab einem bestimmtem Wert beginnen. Es wird wohl auf die klassische for <code>(;;)</code> Schleife hinauslaufen.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - clusi </div> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 16:20:37 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757612#m1757612 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757612#m1757612 <p>Tipp: Du möchtest Dir das Ergebnis bzw. die Zahl zwischenspeichern die beim letzten Vergleich (größer oder kleiner als..) gewonnen hat. MFG</p> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 22:00:22 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757624#m1757624 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757624#m1757624 <p>Liebe(r) Miky,</p> <p>Du willst also die größte "oben"-Zahl und die kleinste "unten"-Zahl haben. Oder ist das nicht richtig?</p> <p>Liebe Grüße</p> <p>Felix Riesterer</p> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 17:02:21 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757613#m1757613 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757613#m1757613 <p>Hello,</p> <blockquote> <p>Ein Hinweis noch: <code>foreach</code> wird Dir vermutlich nicht helfen. Damit werden immer alle Einträge des Arrays verarbeitet. Du musst aber ab einem bestimmtem Wert beginnen. Es wird wohl auf die klassische for <code>(;;)</code> Schleife hinauslaufen.</p> </blockquote> <p>Das stimmt nicht.</p> <p>Es gibt <code>continue</code> und <code>break</code>, mit denen man den Ablauf in einem Foreach-Konstrukt sehr einfach steuern kann.</p> <p>Außerdem könnte es hilfreich sein, zunächst das eigentliche Problem zu schildern und nicht gleich seine vermeintliche programmierte Abbildung/Lösung.</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 17:13:05 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757614#m1757614 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757614#m1757614 <blockquote> <p>Außerdem könnte es hilfreich sein, zunächst das eigentliche Problem zu schildern und nicht gleich seine vermeintliche programmierte Abbildung/Lösung.</p> </blockquote> <p>Das eigentliche Problem ist die Abwesenheit einer zweckmäßigen Datenstruktur. Denn die zu vergleichenden Zahlen stehen ja in irgendeiner Beziehung zueinander, das heißt daß es etwas gibt was die miteinander verbindet. Von daher ist der Vorschlag mit dem Array schonmal ein sehr guter Schritt in Richtung Lösung. Heißt außerdem, daß die Lösung bereits mit der Datenerfassung beginnt.</p> <p>MFG</p> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 17:18:42 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757615#m1757615 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757615#m1757615 <p>Hallo,</p> <blockquote> <blockquote> <p>Ein Hinweis noch: <code>foreach</code> wird Dir vermutlich nicht helfen. Damit werden immer alle Einträge des Arrays verarbeitet. Du musst aber ab einem bestimmtem Wert beginnen. Es wird wohl auf die klassische for <code>(;;)</code> Schleife hinauslaufen.</p> </blockquote> <p>Das stimmt nicht.</p> </blockquote> <p>vielleicht nicht; vielleicht doch. Je nach Anwendungsfall kann <em>foreach</em> eine gute Alternative zur traditionellen for-Schleife sein, eventuell sogar besser.<br> Vor allem wenn die Indexe nicht numerisch oder nicht lückenlos aufeinander folgend sind, kann <em>foreach</em> wesentlich günstiger sein.</p> <blockquote> <p>Es gibt <code>continue</code> und <code>break</code>, mit denen man den Ablauf in einem Foreach-Konstrukt sehr einfach steuern kann.</p> </blockquote> <p>Ja, aber das gilt für die gute alte for-Schleife auch.</p> <blockquote> <p>Außerdem könnte es hilfreich sein, zunächst das eigentliche Problem zu schildern und nicht gleich seine vermeintliche programmierte Abbildung/Lösung.</p> </blockquote> <p>Bingo. Ich weiß nicht, ob ich der einzige bin - aber die eigentliche Aufgabe habe ich auch immer noch nicht verstanden.</p> <p>Ciao,<br>  Martin</p> <div class="signature">-- <br> Computer müssen weiblich sein: Eigensinnig, schwer zu durchschauen, immer für Überraschungen gut - aber man möchte sie nicht missen. </div> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 17:51:53 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757616#m1757616 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757616#m1757616 <p>Hallo TS,</p> <blockquote> <blockquote> <p>foreach (verarbeitet immer) alle Einträge des Arrays.</p> </blockquote> </blockquote> <blockquote> <p>Das stimmt nicht.</p> </blockquote> <p>Okay - von break und continue habe ich mal abgesehen.</p> <p>Jedoch: Wenn es um dies hier geht:</p> <blockquote> <p>Du musst aber ab einem bestimmtem Wert beginnen.</p> </blockquote> <p>dann ist foreach nicht mehr das Mittel der Wahl. Wenn ich ab Position 7 beginnen muss, ist es unschick, im foreach erstmal bis 7 zu zählen und den Schleifenrumpf mit continue zu umgehen. Analog zu LinQ in C# könnte man sich Iteratoren bauen, die Arrayelemente überspringen können, aber das würde hier im Thread nur zur finalen Verwirrung des OP führen </p> <blockquote> <p>Außerdem könnte es hilfreich sein, zunächst das eigentliche Problem zu schildern</p> </blockquote> <p>Amen. A/B Problemquiz zu spielen ist blöde. Wie ich schon als allererstes sagte:</p> <blockquote> <p>gerne möchtest Du uns erklären, was Du eigentlich beabsichtigst.</p> </blockquote> <p>Und damit meinte ich nicht, welche Variable wie zu setzen ist, sondern die fachliche Aufgabenstellung.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - clusi </div> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 21:19:26 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757623#m1757623 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757623#m1757623 <p>Hello Rolf,</p> <blockquote> <p>Jedoch: Wenn es um dies hier geht:</p> <blockquote> <p>Du musst aber ab einem bestimmtem Wert beginnen.</p> </blockquote> </blockquote> <ul> <li>Ab einem bestimmten Wert?</li> <li>Ab einem bestimmten Element?</li> <li>Ab einer bestimmten Position (7. Element in der Kette)?</li> <li>Ab einem bestimmten Index?</li> </ul> <p>Das Problem ist, dass "Arrays" in PHP nur virtuell einen wahlfreien Zugriff auf ihre Elemente zulassen. Im Hintergrund läuft immer ein Suchalgorithmus in einem Hashtable ab, es sei denn, man rückt elementweise weiter. Daher kann der Zugriff mit <code>foreach()</code> und mehrfachem <code>continue</code> oder auch per <code>next()</code> eventuell sogar schneller sein, als per "Index". Der Index ist ja auch nicht echt und hat nichts mit der Position des Elementes zu tun. Sein Wert wird dem Element als Eigenschaft eingeprägt. Das Element kann aber liegen, wo es will.</p> <blockquote> <p>dann ist foreach nicht mehr das Mittel der Wahl. Wenn ich ab Position 7 beginnen muss, ist es unschick, im foreach erstmal bis 7 zu zählen und den Schleifenrumpf mit continue zu umgehen. Analog zu LinQ in C# könnte man sich Iteratoren bauen, die Arrayelemente überspringen können, aber das würde hier im Thread nur zur finalen Verwirrung des OP führen </p> </blockquote> <p>Schau dir mal <a href="http://bitworks.de/sensor" rel="nofollow noopener noreferrer">Sensordaten</a> an. Das ist nur eine experimentelle Seite, die Du per Redirection und Portweiterleitung erreichst. Sie liegt auf einem Raspberry 3+. Es werden alle Daten von Anfang an in ein Array geholt, aus dem dann per <code>foreach()</code> und <code>continue</code> der passende Ausschnitt ausgelesen wird. Wie man sieht, geht das immer noch so schnell, dass man nicht daran denkt, dass da ein paar Tausend Mal (Stand heute ca. 31.100 Mal) <code>continue</code> benutzt wird, bevor die Anzeige gebaut werden kann.</p> <p>Man sollte also seine Angst verlieren vor derartigen Konstrukten. Nur weil ich selber zu faul wäre, zuerst mehrere Tausend Karteikarten zu lesen, bevor ich die richtige finde, fältt das dem Computer gar nicht schwer :-)</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Wed, 11 Sep 19 07:12:11 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757634#m1757634 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757634#m1757634 <p>Hallo Zusammen und Danke nochmals</p> <p>Versuche es nochmals zu erklären.</p> <p>Wenn ich die höchste Zahl von "<em>oben</em>" (<strong>40</strong>) habe, muss dann die Zahl "<em>unten</em>" (<strong>20</strong>) von der höchsten Zahl "<em>oben</em>" (<strong>40</strong>) mindestens einmal unterschritten werden.</p> <p>Das passiert mit der Zahl "<em>unten</em>" (<strong>15</strong>).</p> <p>Dann wenn es wieder eine höchste Zahl "<em>oben</em>" (<strong>45</strong>) gibt, habe ich somit ein treffer (zahl markieren).</p> <p>Danach wieder von vorne, von der höchsten Zahl "<em>oben</em>" (<strong>45</strong>) muss jetzt auch wieder zuerst die Zahl "<em>unten</em>" (<strong>22</strong>) mindestens einmal unterschritten werden</p> <p>und dann eine neue höchste Zahl, damit ich wieder einen treffer bekommen kann.</p> <hr> <p>Deshalb brauche ich nicht einfach die höchste Zahl und die tiefste Zahl vom Array. Es muss der Reihe nach gehen</p> <p>Miky</p> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Tue, 10 Sep 19 22:25:15 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757627#m1757627 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757627#m1757627 <p>Hallo Felix,</p> <blockquote> <p>Du willst also die größte "oben"-Zahl und die kleinste "unten"-Zahl haben. Oder ist das nicht richtig?</p> </blockquote> <p>Ich vermute, keiner hier weiss so richtig, was er eigentlich vorhat. Könnte es sein, dass sich seine Aufgabe grösstenteils mathematisch lösen lässt, anstatt alles zu durchlaufen? Bin leider kein Matheprofi, wie so manch anderer hier, aber neugierig genug das zu fragen.</p> <p>Gruss<br> Henry</p> <div class="signature">-- <br> Meine Meinung zu DSGVO & Co:<br> „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“ </div> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Wed, 11 Sep 19 07:20:28 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757635#m1757635 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757635#m1757635 <p>Hallo Miky,</p> <blockquote> <p>Versuche es nochmals zu erklären.</p> </blockquote> <p>Verständlicher wäre zu erläutern, was du mit deinem gewünschten Resultat beabsichtigst.</p> <blockquote> <p>Deshalb brauche ich nicht einfach die höchste Zahl und die tiefste Zahl vom Array.</p> </blockquote> <p>Da wurde dir schon <a href="https://www.php.net/manual/de/function.max.php" rel="nofollow noopener noreferrer">min() und Max()</a> genannt.</p> <blockquote> <p>Es muss der Reihe nach gehen</p> </blockquote> <p>Das ist wieder nicht, für mich zumindest, zu verstehen warum das so sein muss.</p> <p>Gruss<br> Henry</p> <div class="signature">-- <br> Meine Meinung zu DSGVO & Co:<br> „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“ </div> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Wed, 11 Sep 19 07:53:26 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757636#m1757636 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757636#m1757636 <p>Hallo,</p> <p>Ok.<br> Du brauchst entweder ein Ergebnis-Array oder musst im Ausgangs-Array eine Ergebnis-Eigenschaft mitführen.</p> <p>Außerdem brauchst einen Merker, ein sogenanntes flag, mit dem entschieden wird, ob grad die obere oder untere Zahl relevant ist.</p> <p>Gruß<br> Kalk</p> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Wed, 11 Sep 19 08:04:05 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757638#m1757638 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757638#m1757638 <p>Liebe Mitdenker, liebe Wissende, liebe Neugierige,</p> <blockquote> <p>Versuche es nochmals zu erklären.</p> <p>Wenn ich die höchste Zahl von "<em>oben</em>" (<strong>40</strong>) habe, muss dann die Zahl "<em>unten</em>" (<strong>20</strong>) von der höchsten Zahl "<em>oben</em>" (<strong>40</strong>) mindestens einmal unterschritten werden.</p> <p>Das passiert mit der Zahl "<em>unten</em>" (<strong>15</strong>).</p> <p>Dann wenn es wieder eine höchste Zahl "<em>oben</em>" (<strong>45</strong>) gibt, habe ich somit ein treffer (zahl markieren).</p> <p>Danach wieder von vorne, von der höchsten Zahl "<em>oben</em>" (<strong>45</strong>) muss jetzt auch wieder zuerst die Zahl "<em>unten</em>" (<strong>22</strong>) mindestens einmal unterschritten werden</p> <p>und dann eine neue höchste Zahl, damit ich wieder einen treffer bekommen kann.</p> <hr> <p>Deshalb brauche ich nicht einfach die höchste Zahl und die tiefste Zahl vom Array. Es muss der Reihe nach gehen</p> </blockquote> <p>Mir scheint, dass er relative Minima und relative Maxima einer Kurve bzw. Wertepaarmenge sucht.</p> <p>Wieso die Werte paarig auftreten, habe ich aber auch noch nicht verstanden.</p> <p>Spirituelle Grüße<br> Euer Robert</p> <div class="signature">-- <br> Möge der Forumsgeist ewig leben! </div> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Wed, 11 Sep 19 11:55:46 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757641#m1757641 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757641#m1757641 <p>Hallo Miky,</p> <p>ah, ein par neue Würmer sind aus der Nase hervorgekrochen.</p> <ul> <li>Es muss ein hin- und her sein</li> <li>Es gibt mehr als einen Treffer</li> <li>Die Treffer müssen markiert werden</li> </ul> <p>Dir ist das vermutlich alles selbstverständlich, aber Du erklärst uns nicht, wo du herkommst und wo du hinwillst, und darum ist das für uns nur Rätsel raten. Dir kann keiner helfen, wenn Du uns nicht deine Aufgabenstellung vollständig beschreibst. Zur Zeit habe ich noch einige mögliche Varianten im Kopf, die aber sehr verschieden sind und die von Details deiner Problemstellung abhängen.</p> <p>Ich versuche nochmal eine eigene Fassung, vielleicht kommen wir damit zu einer systematischen Darstellung. Ich halte mich ganz bewusst von konkretem PHP fern.</p> <blockquote> <p>Wir haben eine Liste von N Zahlenpaaren, besteht aus einem "unten" und einem "oben" Wert. Startpunkt ist der erste Eintrag in der Liste.</p> </blockquote> <blockquote> <p>Nun wird abwechselnd eine "oben" und eine "unten" Suche ausgeführt. Es beginnt mit einer "oben" Suche, Vergleichswert ist der "oben" Wert im Listeneintrag. Gesucht wird ab dem zweiten Listeneintrag.</p> </blockquote> <blockquote> <p>Wiederhole die beiden folgenden Schritte, bis Du am Ende der Liste bist:</p> </blockquote> <blockquote> <ul> <li>Suche "oben", bis die Liste zu Ende ist oder ein Eintrag gefunden wird, dessen "oben" Wert größer als der "oben" Vergleichswert ist. Dies ist ein "oben" Treffer, sein "unten" Wert wird zum neuen "unten" Vergleichswert und die Suche geht auf dem Folgeeintrag der Liste weiter.</li> </ul> </blockquote> <blockquote> <ul> <li>Suche "unten", bis die Liste zu Ende ist oder ein Eintrag gefunden wird, dessen "unten" Wert kleiner als der "unten" Vergleichswert ist. Der "oben" Wert dieses Eintrags wird zum neuen "oben" Vergleichswert und die Suche geht auf dem Folgeeintrag der Liste weiter.*</li> </ul> </blockquote> <p>Wäre dieses Vorgehen das, was Du Dir vorstellst? Wenn ja, könnte man über Code sprechen. Die Frage, wie Treffer gespeichert oder markiert werden, wäre dann als nächstes zu behandeln.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - clusi </div> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Thu, 12 Sep 19 07:26:39 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757667#m1757667 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757667#m1757667 <p>Schreib doch den Algorithmus mal auf. Dann dürfte es auch kein Problem sein den nach PHP umzusetzen. MFG</p> Zahlen in einer For-Schleife durchlaufen lassen und überprüfen Wed, 11 Sep 19 07:53:36 Z https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757637#m1757637 https://forum.selfhtml.org/self/2019/sep/10/zahlen-in-einer-for-schleife-durchlaufen-lassen-und-uberprufen/1757637#m1757637 <blockquote> <blockquote> <p>Deshalb brauche ich <strong>nicht</strong> einfach die höchste Zahl und die tiefste Zahl vom Array.</p> </blockquote> <p>Da wurde dir schon <a href="https://www.php.net/manual/de/function.max.php" rel="nofollow noopener noreferrer">min() und Max()</a> genannt.</p> </blockquote> <p>ups... sry hatte das "nicht" nicht gesehen.</p> <p>Gruss<br> Henry</p> <div class="signature">-- <br> Meine Meinung zu DSGVO & Co:<br> „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“ </div>