2017-04-19 4 views
-9
<?php 

$val = 999; 
$sum = 0; 
while($val){ 
    $sum += $val % 10; 
    $val = $val/10; 
} 
echo $sum; 

?> 

Bitte helfen Sie mir oben genannten Code zu erklären, Warum $ Summe ist Summe alle Ziffern von $ val?Können Sie mir helfen, diesen Code zu erklären

+1

Woher haben Sie den Code? Hausaufgaben? –

+0

das Ergebnis ist 27 –

+0

Studieren Sie den Code und ich bin mir sicher, dass Sie es herausfinden werden. Es ist alles ziemlich Standard, die einzige Sache, die Sie wegwerfen kann, ist der Modulo-Operator '%', aber Sie finden die gesamte Dokumentation, die Sie dazu im Handbuch benötigen, http://php.net/manual/en/language .operators.arithmetic.php – Qirel

Antwort

3

Ihr Code ist also;

<?php 

    $val = 999; 
    $sum = 0; 
    while($val){ 
    $sum += $val % 10; 
    $val = $val/10; 
    } 
    echo $sum; 
?> 

Kommen jetzt zur While-Schleife;

      Iteration 1  Iteration 2  Iteration 3 
while($val){   |while(999){ |while(99){  |while(9){ 
    $sum += $val % 10; |$sum +=999%10; |$sum +=99%10; | $sum+=9%10; 
    $val = $val/10; |$val=999/10; |$val=99/10; | $val=9/10; 
    }      |}    |}    |} 
         |$sum=9;  |$sum=9+9=18 |$sum=18+9=27 
         | $val=99  | $val=9  |$val=0 

Jetzt $ val ist 0; Die Schleife wird also verlassen.

echo $sum 

Druckt 27

+0

Es ist schön, Code zu lesen. hilfreich zum Verstehen danke für die Erklärung –

+0

Sehr schöne Erklärung ... Gute Arbeit –

0

% ist der Rest.

So durchlaufen Sie $ val, die kein Array ist, so wird es für 999 und 99 und 9 Schleife. Daher summiert $ Summe den Rest von 9% 10, die jeweils 9 ist.

also für jede Ziffer (9 9 9) der Rest 9. so würde Ihr Ergebnis sein, 27.

Der Code $val/10 ist der tatsächliche Teiler, die jede Schleife 999 um 10 eigentuemlichen die Zahl macht, so ersten Schleife 999/10 = 99 und zweite Schleife 99/10 = 9 und drittes Schleifenergebnis wäre 0. Dies ist, wie die Wertnummer von $ val abfällt, so dass die Schleife endet.

+0

Danke Simos für Ihre eine Frage noch einmal zu erklären.nach $ val% bis 10 warum ist must/by 10 –

0

@Wawan Sumardi versuchen, die Ausführungsschritte unten zu verstehen:

<?php 
$val = 999; 
$sum = 0; 

Schritt 1

while($val){ //$val = 999, while condition is true 
    $sum += $val % 10; //$sum = 9 as % operator give you the remainder 
    $val = $val/10; //this/only for removing digit one by one to your $val means the current digit has been added in $sum now we don't have to add current digit again so your $val will be like 999, 99, 9, 0 this only because you want sum all the digits so it is needed this is the logic 
} 

Schritt 2

while($val){ //now $val = 99, again while condition is true 
    $sum += $val % 10; //again get 9 but the previous $sum = 9 so with += increment operator it will be added in $sum so now $sum = 18 
    $val = $val/10; //previous $val = 99 now $val = 9 
} 

Schritt 3

while($val){ // now $val = 9, again while condition is true 
    $sum += $val % 10; //again 9 but the previous $sum = 18 so with += increment operator it will be added in $sum so now $sum = 27 
    $val = $val/10; //previous $val = 9 now $val = 0 
} 

Schritt 4

while($val){ // now as $val = 0, 0 is false value so now while condition is false so it break the while loop and below you will get $sum = 27 
    $sum += $val % 10; 
    $val = $val/10; 
} 

echo $sum; 

Ausgabe: 27

Verwandte Themen