tag:forum.selfhtml.org,2005:/self Hilfe bei PHP Erklärungen – SELFHTML-Forum 2016-06-06T17:37:43Z https://forum.selfhtml.org/self/2016/jun/6/hilfe-bei-php-erklaerungen/1668786#m1668786 PHPLerner 2016-06-06T12:33:07Z 2016-06-06T12:33:07Z Hilfe bei PHP Erklärungen <p>Liebe Self Gemeinde,</p> <p>bei stöbern im Netz bin ich auf ein paar PHP Übungen und Fragen gestossen. (teilweise Zend)</p> <p>Manches ist mir nicht so klar, daher mal meine Bitte ob jemand mal meine Erklärungsversuche durchsieht oder genaue Infos dazu gibt. Hier die Fragen:</p> <p><strong>Beispiel1:</strong></p> <pre><code class="block language-php"><span class="token variable">$x</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"08"</span><span class="token punctuation">;</span> <span class="token variable">$y</span> <span class="token operator">=</span> <span class="token number">08</span><span class="token punctuation">;</span> <span class="token variable">$z</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"47"</span><span class="token punctuation">;</span> <span class="token variable">$x</span> <span class="token operator">+=</span> <span class="token number">15</span><span class="token punctuation">;</span> <span class="token variable">$y</span> <span class="token operator">+=</span> <span class="token string double-quoted-string">"15"</span><span class="token punctuation">;</span> <span class="token variable">$z</span> <span class="token operator">+=</span> <span class="token number">11</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token variable">$x</span> <span class="token variable">$y</span> <span class="token variable">$z</span><span class="token punctuation">;</span> </code></pre> <p>Liefert als Ergebnis:</p> <p>231558</p> <p>Ist das so weil:</p> <p>Der Wert 23 bei $x weil PHP den String "08" automatisch als Zahl 8 erkennt und 8 + 15 = 23 ist?</p> <p>Der Wert 15 bei $y weil PHP die Zahl 08 als 0 interpretiert und daher Gesamt = 15 ergibt?</p> <p>Der wert 58 bei $z weil PHP den String "47" als Zahl 47 interpretiert und + 11 dann 58 ergibt?</p> <p><strong>Beispiel 2</strong></p> <p>Warum bringt dieser Code Syntax Error?</p> <pre><code class="block language-php"><span class="token function">define</span> <span class="token punctuation">(</span><span class="token string single-quoted-string">'CONSTANT'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">define</span> <span class="token punctuation">(</span><span class="token string single-quoted-string">'_CONSTANT'</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">define</span> <span class="token punctuation">(</span><span class="token string single-quoted-string">'EMPTY'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token keyword">EMPTY</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">//hier erster Syntax Error</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token punctuation">(</span><span class="token keyword type-casting">boolean</span><span class="token punctuation">)</span> <span class="token constant">_CONSTANT</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// wirft auch einen Fehler</span> <span class="token keyword">print</span> <span class="token string double-quoted-string">"One"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">constant</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'CONSTANT'</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">print</span> <span class="token string double-quoted-string">"Two"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Kommt der erste Fehler weil empty() nur bei Variablen geht? Wenn man dann aber den Code ändert nach if (EMPTY == "")) { ..passt es trotzdem nicht? Weil EMPTY ein geschützter Begriff ist? Mit _EMPTY geht es.</p> <p>Was passt PHP an dieser Zeile nicht? if (!(boolean) _CONSTANT)) {</p> <p><strong>Beispiel 3</strong></p> <p>$x = (bool) " " * (int) (string) 12E-1; echo $x;</p> <p>Ergibt 1 aber warum?</p> <p>Was macht denn überhaupt (string) 12E-1 und wofür steht 12E-1 ? Wenn man nur echo (string) 12E-1 eingibt kommt 1,2 zu Stande</p> <p><strong>Beispiel 4</strong></p> <pre><code class="block language-php"><span class="token variable">$p</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"PHP"</span><span class="token punctuation">;</span> <span class="token variable">$P</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"php"</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token punctuation">(</span><span class="token variable">$p</span> <span class="token operator"><</span> <span class="token variable">$P</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">2</span> <span class="token operator">*</span> <span class="token punctuation">(</span><span class="token variable">$p</span> <span class="token operator">></span> <span class="token variable">$P</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">3</span> <span class="token operator">*</span> <span class="token punctuation">(</span><span class="token variable">$p</span> <span class="token operator">==</span> <span class="token variable">$P</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Das ergibt 1.</p> <p>echo ($p < $P) ; ergibt 1 aber warum? wäre doch wie PHP ist kleiner php. Wird hier nach Groß Kleinschreibung verglichen? echo ($p > $P) ergibt "Leer" aber warum? und ($p == $P); ist vermutlich false</p> <p>Wie muss man dann obiges Konstrukt lesen? Etwa so?</p> <p>3 * false ist 0 plus 2 + Leer ist 0 plus 1 von ($p < $P) ist dann als Ergebnis 1 ?</p> <p><strong>Beispiel 5</strong></p> <pre><code class="block language-php"><span class="token variable">$str</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'abcdef'</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">strpos</span><span class="token punctuation">(</span><span class="token variable">$str</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'a'</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Zeichen 'a' gefunden"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Buchstabe 'a' wurde nicht gefunden"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Warum wird hier immer in den Else Zweig gesprungen? Weil das Zeichen a am Anfang vom String steht und daher 0 liefert ?</p> <p>Danke Gruss</p> https://forum.selfhtml.org/self/2016/jun/6/hilfe-bei-php-erklaerungen/1668790#m1668790 dedlfix 2016-06-06T13:11:12Z 2016-06-06T13:21:44Z Hilfe bei PHP Erklärungen <p>Tach!</p> <blockquote> <p>Der Wert 23 bei $x weil PHP den String "08" automatisch als Zahl 8 erkennt und 8 + 15 = 23 ist?</p> </blockquote> <p>Ja.</p> <blockquote> <p>Der Wert 15 bei $y weil PHP die Zahl 08 als 0 interpretiert und daher Gesamt = 15 ergibt?</p> </blockquote> <p>Vor PHP 7 wurden Oktalzahlen mit fehlerhaften Stellen vor dieser Stelle abgeschitten. Die 8 ist falsch, die 0 bleibt übrig. Bei 018 beispielsweise käme 1 raus. Ab PHP7 soll das einen Parse-Fehler geben. <a href="http://php.net/manual/en/language.types.integer.php" rel="noopener noreferrer">http://php.net/manual/en/language.types.integer.php</a></p> <blockquote> <p>Der wert 58 bei $z weil PHP den String "47" als Zahl 47 interpretiert und + 11 dann 58 ergibt?</p> </blockquote> <p>Ja.</p> <blockquote> <p>if (!empty(EMPTY)) { //hier erster Syntax Error</p> </blockquote> <p><a href="http://php.net/manual/en/function.empty.php" rel="noopener noreferrer">empty()</a> erwartete bis PHP 5.5 eine Variable.</p> <blockquote> <pre><code> if (!(boolean) _CONSTANT)) { // wirft auch einen Fehler </code></pre> </blockquote> <p>Bitte Fehlermeldungen nicht nur erwähnen, sondern auch ihren Inhalt anführen. Da ist eine Klammer) zu viel.</p> <blockquote> <p>Wenn man dann aber den Code ändert nach if (EMPTY == "")) { ..passt es trotzdem nicht?</p> </blockquote> <p>Wegen der überflüssigen Klammer.</p> <blockquote> <p>Was macht denn überhaupt (string) 12E-1 und wofür steht 12E-1 ?</p> </blockquote> <p>Das (string) ist eine <a href="http://php.net/manual/en/language.types.type-juggling.php" rel="noopener noreferrer">Typkonvertierung</a>, 12E-1 ist die Literalschreibweise für eine Exponentialzahl (hier: 12 mal 10 hoch -1).</p> <blockquote> <p>$x = (bool) " " * (int) (string) 12E-1;<br> echo $x;</p> <p>Ergibt 1 aber warum?</p> </blockquote> <p>Das Leerzeichen typkonvertiert nach Boolean ergibt true. 12E-1 konvertiert nach String ergibt "1.2", konvertiert nach int ergibt 1, true im numerischen Kontext ist 1, 1*1 = 1.</p> <blockquote> <p>echo ($p < $P) ; ergibt 1 aber warum? wäre doch wie PHP ist kleiner php. Wird hier nach Groß Kleinschreibung verglichen? echo ($p > $P) ergibt "Leer" aber warum? und ($p == $P); ist vermutlich false</p> </blockquote> <p>Nimm mal lieber var_dump(), das ist genauer als echo, denn echo ändert bestimmte Werte beim Ausgeben. true wird zu 1 beispielsweise. Und dann teste die Ausdrücke einzeln. Wirds dann klarer?</p> <blockquote> <p>if (strpos($str, 'a')) {</p> <p>Warum wird hier immer in den Else Zweig gesprungen? Weil das Zeichen a am Anfang vom String steht und daher 0 liefert ?</p> </blockquote> <p>Ja. Siehe Handbuch zur Funktion strpos() für die Umgehung des Problems. Handbuchlesen ist immer eine gute Idee, besonders bei unbekannten Funktionen.</p> <p>dedlfix.</p> https://forum.selfhtml.org/self/2016/jun/6/hilfe-bei-php-erklaerungen/1668793#m1668793 Der Martin 2016-06-06T13:18:57Z 2016-06-06T13:18:57Z Hilfe bei PHP Erklärungen <p>Hallo,</p> <blockquote> <p>Manches ist mir nicht so klar, daher mal meine Bitte ob jemand mal meine Erklärungsversuche durchsieht oder genaue Infos dazu gibt.</p> </blockquote> <p>schau'mer mal ... :-)</p> <blockquote> <pre><code class="block language-php"><span class="token variable">$x</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"08"</span><span class="token punctuation">;</span> <span class="token variable">$y</span> <span class="token operator">=</span> <span class="token number">08</span><span class="token punctuation">;</span> <span class="token variable">$z</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"47"</span><span class="token punctuation">;</span> <span class="token variable">$x</span> <span class="token operator">+=</span> <span class="token number">15</span><span class="token punctuation">;</span> <span class="token variable">$y</span> <span class="token operator">+=</span> <span class="token string double-quoted-string">"15"</span><span class="token punctuation">;</span> <span class="token variable">$z</span> <span class="token operator">+=</span> <span class="token number">11</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token variable">$x</span> <span class="token variable">$y</span> <span class="token variable">$z</span><span class="token punctuation">;</span> </code></pre> <p>Liefert als Ergebnis:</p> <p>231558</p> <p>Ist das so weil:</p> <p>Der Wert 23 bei $x weil PHP den String "08" automatisch als Zahl 8 erkennt und 8 + 15 = 23 ist?</p> </blockquote> <p>Ja.</p> <blockquote> <p>Der Wert 15 bei $y weil PHP die Zahl 08 als 0 interpretiert und daher Gesamt = 15 ergibt?</p> </blockquote> <p>Ja. Hier ist es etwas gemeiner: Zahlen, die mit einer führenden Null notiert werden, interpretiert PHP als Oktalzahlen. Aber eigentlich würde ich bei der Zuweisung $y = 08; schon einen Syntaxfehler erwarten, weil es im Oktalsystem keine Ziffer 8 gibt.</p> <blockquote> <p>Der wert 58 bei $z weil PHP den String "47" als Zahl 47 interpretiert und + 11 dann 58 ergibt?</p> </blockquote> <p>Ja. Identisch mit dem ersten Fall.</p> <blockquote> <pre><code class="block language-php"><span class="token function">define</span> <span class="token punctuation">(</span><span class="token string single-quoted-string">'CONSTANT'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">define</span> <span class="token punctuation">(</span><span class="token string single-quoted-string">'_CONSTANT'</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">define</span> <span class="token punctuation">(</span><span class="token string single-quoted-string">'EMPTY'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token keyword">EMPTY</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">//hier erster Syntax Error</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token punctuation">(</span><span class="token keyword type-casting">boolean</span><span class="token punctuation">)</span> <span class="token constant">_CONSTANT</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// wirft auch einen Fehler</span> <span class="token keyword">print</span> <span class="token string double-quoted-string">"One"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">constant</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'CONSTANT'</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">print</span> <span class="token string double-quoted-string">"Two"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Kommt der erste Fehler weil empty() nur bei Variablen geht?</p> </blockquote> <p>Ja, korrekt.</p> <blockquote> <p>Wenn man dann aber den Code ändert nach if (EMPTY == "")) { ..passt es trotzdem nicht?<br> Weil EMPTY ein geschützter Begriff ist?</p> </blockquote> <p>Nicht exakt ein geschützter Begriff - aber bei Funktionen und funktions-ähnlichen Konstrukten ist PHP nicht case-sensitive. Der Bezeichner EMPTY wäre daher identisch mit der Pseudofunktion empty().</p> <blockquote> <p>Was passt PHP an dieser Zeile nicht?<br> if (!(boolean) _CONSTANT)) {</p> </blockquote> <p>Kann ich auf Anhieb nicht sagen.</p> <pre><code class="block language-php"> <span class="token operator">></span> <span class="token variable">$x</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token keyword type-casting">bool</span><span class="token punctuation">)</span> <span class="token string double-quoted-string">" "</span> <span class="token operator">*</span> <span class="token punctuation">(</span><span class="token keyword type-casting">int</span><span class="token punctuation">)</span> <span class="token punctuation">(</span><span class="token keyword type-casting">string</span><span class="token punctuation">)</span> <span class="token number">12E-1</span><span class="token punctuation">;</span> <span class="token operator">></span> <span class="token keyword">echo</span> <span class="token variable">$x</span><span class="token punctuation">;</span> </code></pre> <blockquote> <p>Ergibt 1 aber warum?</p> </blockquote> <p>Mal langsam. Also: 12E-1 ist normalisiert 1.2, also steht da (string) 1.2, und das ergibt den String "1.2". Dann ein Typecasr nach int, und man erhält 1. Der zweite Faktor der Multiplikation ist also 1. Davor steht (bool) " ", und ein nicht-leerer String ergibt im boolschen Kontext <em>true</em>, also 1.</p> <blockquote> <p>Was macht denn überhaupt (string) 12E-1</p> </blockquote> <p>Es wandelt den float-Zahlenwert in einen String um.</p> <blockquote> <p>und wofür steht 12E-1 ?</p> </blockquote> <p>Das ist die wissenschatliche Notation und steht als Abkürzung für 12 * 10⁻¹, aber üblicherweise normalisiert man die Darstellung dann so, dass die Mantisse im Bereich [1.0 .. 10.0[ liegt. Also ist der Ausdruck gleichwertig mit 1.2 * 10⁰.</p> <blockquote> <p>Wenn man nur echo (string) 12E-1 eingibt kommt 1,2 zu Stande</p> </blockquote> <p>Eben. qed. :-)</p> <blockquote> <pre><code class="block language-php"><span class="token variable">$p</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"PHP"</span><span class="token punctuation">;</span> <span class="token variable">$P</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"php"</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token punctuation">(</span><span class="token variable">$p</span> <span class="token operator"><</span> <span class="token variable">$P</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">2</span> <span class="token operator">*</span> <span class="token punctuation">(</span><span class="token variable">$p</span> <span class="token operator">></span> <span class="token variable">$P</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">3</span> <span class="token operator">*</span> <span class="token punctuation">(</span><span class="token variable">$p</span> <span class="token operator">==</span> <span class="token variable">$P</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Das ergibt 1.</p> <p>echo ($p < $P) ; ergibt 1 aber warum? wäre doch wie PHP ist kleiner php. Wird hier nach Groß Kleinschreibung verglichen?</p> </blockquote> <p>Exakt. Es wird Zeichen für Zeichen verglichen, und "P" hat den Code 0x50, "p" den Code 0x70. Groß- und Kleinbuchstaben sind einfach verschiedene Zeichen, und die Großbuchstaben kommen in der Codetabelle zuerst.</p> <blockquote> <p>echo ($p > $P) ergibt "Leer" aber warum?</p> </blockquote> <p>Was meinst du mit "Leer"? Nein, das sollte <em>false</em> ergeben, also numerisch interpretiert 0.</p> <blockquote> <p>und ($p == $P); ist vermutlich false</p> </blockquote> <p>Ja.</p> <blockquote> <p>Wie muss man dann obiges Konstrukt lesen? Etwa so?</p> <p>3 * false ist 0 plus 2 + Leer ist 0 plus 1 von ($p < $P) ist dann als Ergebnis 1 ?</p> </blockquote> <p>Ja, nur dass ich mit dem "Leer" nicht einverstanden bin und da auch <em>false</em> erwarten würde.</p> <blockquote> <pre><code class="block language-php"><span class="token variable">$str</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'abcdef'</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">strpos</span><span class="token punctuation">(</span><span class="token variable">$str</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'a'</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Zeichen 'a' gefunden"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Buchstabe 'a' wurde nicht gefunden"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Warum wird hier immer in den Else Zweig gesprungen?<br> Weil das Zeichen a am Anfang vom String steht und daher 0 liefert ?</p> </blockquote> <p>Genau, und 0 ist, als boolscher Wert interpretiert, <em>false</em>. Also ist die Bedinung nicht erfüllt. Bei solchen Funktionen, die 0 als gültigen Wert zurückgeben können, muss man höllisch aufpassen. Am besten ist in so einem Fall, typsicher zu vergleichen:</p> <blockquote> <pre><code class="block language-php"><span class="token variable">$str</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'abcdef'</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">strpos</span><span class="token punctuation">(</span><span class="token variable">$str</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'a'</span><span class="token punctuation">)</span><span class="token operator">!==</span><span class="token constant boolean">false</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Zeichen 'a' gefunden"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Buchstabe 'a' wurde nicht gefunden"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> </blockquote> <p>Der Operator !== bewirkt hier einen exakten Vergleich, bei dem keine automatische Typumwandlung stattfindet.</p> <p>So long,<br>  Martin</p> <div class="signature">-- <br> Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.<br> - Douglas Adams, The Hitchhiker's Guide To The Galaxy </div> https://forum.selfhtml.org/self/2016/jun/6/hilfe-bei-php-erklaerungen/1668791#m1668791 dedlfix 2016-06-06T13:15:07Z 2016-06-06T13:15:07Z Hilfe bei PHP Erklärungen <p>Tach!</p> <p>Achja, die <a href="http://php.net/manual/en/types.comparisons.php" rel="noopener noreferrer">Type Comparison Table</a> ist auch immer eine gute Anlaufstelle, um die Eigenheiten PHPs beim Typkonvertieren zu sehen. Andere Sprachen machen das nämlich teilweise anders.</p> <p>dedlfix.</p> https://forum.selfhtml.org/self/2016/jun/6/hilfe-bei-php-erklaerungen/1668794#m1668794 Der Martin 2016-06-06T13:21:32Z 2016-06-06T13:21:32Z Hilfe bei PHP Erklärungen <p>Hallo,</p> <blockquote> <blockquote> <p>Der Wert 15 bei $y weil PHP die Zahl 08 als 0 interpretiert und daher Gesamt = 15 ergibt?</p> </blockquote> <p>Vor PHP 7 wurden Oktalzahlen mit fehlerhaften Stellen vor dieser Stelle abgeschitten. Die 8 ist falsch, die 0 bleibt übrig. Bei 018 beispielsweise käme 1 raus. Ab PHP7 soll das einen Parse-Fehler geben. <a href="http://php.net/manual/en/language.types.integer.php" rel="noopener noreferrer">http://php.net/manual/en/language.types.integer.php</a></p> </blockquote> <p>ah, interessant.</p> <blockquote> <p>12E-1 ist die Literalschreibweise für eine Exponentialzahl (hier: 12 hoch -1).</p> </blockquote> <p>nein, sondern 12 mal 10 hoch -1.</p> <p>So long,<br>  Martin</p> <div class="signature">-- <br> Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.<br> - Douglas Adams, The Hitchhiker's Guide To The Galaxy </div> https://forum.selfhtml.org/self/2016/jun/6/hilfe-bei-php-erklaerungen/1668798#m1668798 Google weiß alles 2016-06-06T14:07:43Z 2016-06-06T14:08:12Z Hilfe bei PHP Erklärungen <blockquote> <blockquote> <pre><code class="block">$y = 08; </code></pre> </blockquote> <p>Ab PHP7 soll das einen Parse-Fehler geben. <a href="http://php.net/manual/en/language.types.integer.php" rel="noopener noreferrer">http://php.net/manual/en/language.types.integer.php</a></p> </blockquote> <p>Falls das <em>"soll"</em> als Gerücht begriffen wird: Ich kann dieses weitaus bessere Verhalten von PHP7 bestätigen:</p> <pre><code class="block">PHP Parse error: Invalid numeric literal in ... </code></pre> <p>PHP-Versionen unter 7 geben nicht einmal eine Notiz aus. Daten stillschweigend zu verändern ist (ob dokumentiert oder nicht) schlicht und einfach "Mist".</p> https://forum.selfhtml.org/self/2016/jun/6/hilfe-bei-php-erklaerungen/1668796#m1668796 Tabellenkalk 2016-06-06T13:51:39Z 2016-06-06T13:54:32Z Hilfe bei PHP Erklärungen <p>Hallo,</p> <blockquote> <p>Dann ein Typecasr nach int,</p> </blockquote> <p>Wir haben früher mal "Typecas<strong>t</strong>" gesagt, aber heute nimmt man sowas ja nicht mehr so genau... ;)</p> <p>Gruß<br> Kalk</p> <p>PS: Bestimmt machst du hier gleich den Dedlfix und sagst, dass du das doch geschrieben hast</p> https://forum.selfhtml.org/self/2016/jun/6/hilfe-bei-php-erklaerungen/1668795#m1668795 dedlfix 2016-06-06T13:24:26Z 2016-06-06T13:24:26Z Hilfe bei PHP Erklärungen <p>Tach!</p> <blockquote> <blockquote> <p>12E-1 ist die Literalschreibweise für eine Exponentialzahl (hier: 12 hoch -1).</p> </blockquote> <p>nein, sondern 12 mal 10 hoch -1.</p> </blockquote> <p>Hab ich doch geschrieben, du musst dich verlesen haben ... ;)</p> <p>dedlfix.</p> https://forum.selfhtml.org/self/2016/jun/6/hilfe-bei-php-erklaerungen/1668797#m1668797 Der Martin 2016-06-06T14:06:41Z 2016-06-06T14:06:41Z Hilfe bei PHP Erklärungen <p>Hi,</p> <blockquote> <blockquote> <p>Dann ein Typecasr nach int,</p> </blockquote> <p>Wir haben früher mal "Typecas<strong>t</strong>" gesagt, aber heute nimmt man sowas ja nicht mehr so genau... ;)</p> </blockquote> <p>ja, das muss man entspannt sehen. Manchmal nehme ich einfach die Tasten, die zufällig gerade da sind und um die Gunst der Finger wetteifern. :-)</p> <blockquote> <p>PS: Bestimmt machst du hier gleich den Dedlfix und sagst, dass du das doch geschrieben hast</p> </blockquote> <p>Nö, das wäre ja langweilig.</p> <p>So long,<br>  Martin</p> <div class="signature">-- <br> Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.<br> - Douglas Adams, The Hitchhiker's Guide To The Galaxy </div> https://forum.selfhtml.org/self/2016/jun/6/hilfe-bei-php-erklaerungen/1668800#m1668800 MudGuard http://www.andreas-waechter.de/ 2016-06-06T17:37:43Z 2016-06-06T17:37:43Z Hilfe bei PHP Erklärungen <p>Hi,</p> <blockquote> <blockquote> <p>Dann ein Typecas<strong>r</strong> nach int,</p> </blockquote> <p>Wir haben früher mal "Typecas<strong>t</strong>" gesagt, aber heute nimmt man sowas ja nicht mehr so genau... ;)</p> </blockquote> <p>in Zeiten von Flick<strong>r</strong>, Frapp<strong>r</strong>, Twitt<strong>r</strong> usw. ist Typecas<strong>r</strong> doch ganz ok<strong>r</strong> ...</p> <p>cu,<br> Andreas a/k/a MudGuard</p>