• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Fragen über Fragen-Heute das Thema : echo!

Nikita

Mitglied
Hey liebe Leute,
ich weis ich nerv warscheinlich mit meinem Unwissen^^
aber ich werd hier jeden Tag einer anderen Aufgabe gegenübergestellt ohne dass ich die davor vollkomm verstanden habe aber nun gut =)

heute möchte ich gern wissen ob mir jemand mal diesen Code erklären kann, was genau seine aufgaben sind, was er bewirkt, wie man damit am besten umgeht ect.
wäre sehr nett wenn sich jemand die Zeit nimmt und es mir erklärt =)

HTML:
<?

$i=1;



if($i %3 == 0){
 echo '<div style="clear: both;">
  </div>';
}
$i++;

?>
 
Werbung:
ich mach mal den anfang mit der 'erklärung'... ;)

Eins ist klar: das ist PHP (eine Serverseitigesprache)

PHP:
<?
 
?>
Damit öffnet bzw. schließt ein PHP-'Programm'

PHP:
$i=1;
Das ist eine Variable (speichert einen Text/Wert) in PHP

PHP:
if($i %3 == 0){
   //wenn das stimmt dann tue das...
}
Das ist eine If-Schleife...

PHP:
 echo 'blablabla';
und echo sorgt dafür das irgendetwas auf dem Bildschirm ausgegeben wird...

PHP:
$i++;
erhöht eine varbiable um ein ($i++ ist das gleiche wie $i = $i+1)


ich habe jetzt ganz grob gesagt was das ist und was man damit machen kann... vielleicht kannst du dich mit diesen kenntnissen im internet umschauen...
 
Zuletzt bearbeitet:
Hallo,
im Prinzip wurde fast alles richtig beschrieben.
Nur über echo würde ich sagen, dass es eine allgemeine Ausgabe von irgendetwas ist und keine explizite Ausgabe auf dem Bildschirm. Dabei wandelt echo alles in ein String um und gibt diesen aus. In diesem Fall wird über echo ein <div> Container in der Webseite erzeugt.

Nun aber allgemein zum Code. Das macht ohne eine umschließende Schleife wenig Sinn. Welche schleife es sein soll hängt von der Aufgabestellung ab. Die Schleife wird gebraucht um den inkrementierten Wert von $i zu prüfen. Sonnst wird nur ein Wert nämlich 1 geprüft.

Die interessanteste Stelle im Code ist
PHP:
if($i %3 == 0)
Prozent Zeichen hat in diesem Zusammenhang den Namen Modulo. Dementsprechend wird hier eine Modulo-Rechnung durchgeführt. Dabei wird der Wert der Variable $i durch 3 geteilt, und nur der Rest(das, was nach der Komma steht) der Teilung gespeichert. Hier ein Beispiel:
$i / 3 = Wert,Rest => $i % 3 = Ergebnis
1 / 3 = 0,3 => 1 % 3 = 3
2 / 3 = 0,6 => 2 % 3 = 6
3 / 3 = 1,0 => 3 % 3 = 0 (die if Bedienung ist erfühlt)
4 / 3 = 1,3 => 4 % 3 = 3
5 / 3 = 1,6 => 5 % 3 = 6
6 / 3 = 2,0 => 6 % 3 = 0 (die if Bedienung ist erfühlt)

Als nächstes wird dieser Rest mit Null verglichen. Der Vergleich liefert einen TRUE oder FALSE zurück, was als Bedienung für das Ausführen des Codes innerhalb {...} Klammern ist.

Und so sollte meiner Meinung nach dieser Code aussehen:
PHP:
<? 
 $i=1; 
 while ($i <= 10) { // die Schleife wird 10 Mal abgearbeitet   
   if(($i % 3) == 0){  // Den Wert der Modulo-Rechnung mit Null vergleichen    
     echo '<div style="clear: both;">     
     </div>';   // Einen <div> Container erzeugen 
   }  
   $i++;  // $i um eins erhöhen
  } 
?>
PORTAL
 
Werbung:
Der Rest ist nicht das, was nach dem Komma steht, sondern derjenige Anteil der Zahl links vom Modulo-Operator, der nicht mehr „glatt“ durch die Zahl rechts vom Modulo-Operator geteilt werden kann.

Das ist so, wie Division vor Einführung der Kommazahlen in der Schule unterrichtet wird: 26 geteilt durch 7 = 3 Rest 5

Diesen Rest liefert der Modulo-Operator.

Gebraucht wird das üblicherweise, um alle n Schleifendurchläufe bestimmte Logik auszuführen. Zum Beispiel, um x Boxen in Reihen zu je n Elementen anzuordnen (siehe Code unten).

PHP:
<?php

$i = 0;
$k = 5; // Teiler

$i_max = $k * 4;



echo '<h1>Modulo ' . $k . '</h1>';

echo '<table border="1">';
echo '<tr><th>' . implode('</th><th>',
        array('$i', '$k', 'Ganzzahl', 'Rest (= $i % $k)', '&nbsp;')) . '</th></tr>';

while ($i <= $i_max) {

    $ganzzahl = (int) ($i / $k);
    $rest = $i % $k;
    $lesbar = $i . ' geteilt durch ' . $k
            . ' = ' . $ganzzahl . ' Rest ' . $rest;

    echo '<tr><td>' . implode('</td><td>',
            array($i, $k, $ganzzahl, $rest, $lesbar)) . '</td></tr>';
    
    $i++;
}

echo '</table>';


echo '<hr>';


$i = 1;

while ($i <= $i_max) {
    echo '<div style="width: 50px; height: 50px; float: left;
                      border: 1px solid #ccc; margin: 10px;">';
    echo $i;
    echo '</div>';

    if ($i % $k === 0) {
        echo '<div style="clear: both;"></div>';
    }

    $i++;
}
 
@mermshaus,
du hast Recht mit dem Rest, das wüsste ich auch. Ich bin aber vom obigen Beispiel ausgegangen, und da ist der Rest immer das, was nach dem Komma steht. Es schien mir einfacher es auf diesem Wege zu erklären. Aber dein Beispiel 26 / 7 = 3 Rest 5 ist viel besser. Danke für die Korrektur.
PORTAL
 
Werbung:
Ich bin aber vom obigen Beispiel ausgegangen, und da ist der Rest immer das, was nach dem Komma steht.

Ich bin mir nicht völlig sicher, wie du das meinst, aber deine Tabelle müsste korrekt so aussehen:

Code:
$i / 3 = Wert,Rest => $i % 3 = Ergebnis
---------------------------------------
 1 / 3 =   0 , 1   =>  1 % 3 = 1
 2 / 3 =   0 , 2   =>  2 % 3 = 2
 3 / 3 =   1 , 0   =>  3 % 3 = 0 (die if-Bedingung ist erfüllt)
 4 / 3 =   1 , 1   =>  4 % 3 = 1
 5 / 3 =   1 , 2   =>  5 % 3 = 2
 6 / 3 =   2 , 0   =>  6 % 3 = 0 (die if-Bedingung ist erfüllt)

Nimm's mir nicht übel, ich versuche nur, da einem möglichen Verständnisfehler vorzugreifen.
 
@ mermshaus,
da ist bei mir wohl vieles schief gegangen) Danke, dass du es prüfst!
Allgemein bin ich immer dankbar, wenn man mich korrigiert, das bringt mich weiter.
Ich habe mir meine Tabelle noch ein Mal angeschaut - das ist ein Desaster. Der Rest kann ja nie größer oder gleich der Zahl rechts vom Modulo Operator sein. :oops:

PORTAL
 
Zuletzt bearbeitet:
Zurück
Oben