9 Stimmen

Wofür wird += verwendet?

Ich glaube, das ist eine dumme Frage, aber ich konnte sie auf php nicht finden. Warum ist ein + mit dem = in den folgenden Code:

function calculateRanking()
{
    $created = $this->getCreated();

    $diff = $this->getTimeDifference($created, date('F d, Y h:i:s A'));

    $time = $diff['days'] * 24;
    $time += $diff['hours'];
    $time += ($diff['minutes'] / 60);
    $time += (($diff['seconds'] / 60)/60);

    $base = $time + 2;        

    $this->ranking = ($this->points - 1) / pow($base, 1.5);

    $this->save();
}

Ist dies so $time hat alle diese Werte oder vielmehr ist es alle Werte zu $time hinzufügen?

Danke

36voto

Adam Davis Punkte 89506

Sie addiert all diese Werte zur Zeit.

something += somethingelse

ist eine Abkürzung für

something = something + somethingelse

-Adam

4 Stimmen

BITTE DENKEN SIE DARAN: Dies funktioniert nicht für Strings. Um Zeichenketten zu verketten, verwenden Sie .= ... Das hat mich wahnsinnig gemacht!

0 Stimmen

Das ist richtig, aber das liegt daran, dass der Punkt der Verkettungsoperator ist. + erlaubt der Einfachheit halber die Verkettung, aber eigentlich ist es der Punkt.

0 Stimmen

Warum werden die Kommentare anderer Leute weiter oben angezeigt als meine, obwohl ich zuerst geantwortet habe? Es ist schwer, eine richtige Antwort zu erhalten, wenn meine nach anderen Personen mit 1000-mal mehr Ansehen als ich aufgeführt wird, obwohl meine Antwort richtig war und als richtige Antwort gewertet werden sollte.

11voto

DMCS Punkte 31603
$time += $diff['hours'];

ist dasselbe wie die Aussage

$time = $time + $diff['hours'];

0 Stimmen

Warum werden die Kommentare anderer Leute weiter oben angezeigt als meine, obwohl ich zuerst geantwortet habe? Es ist schwer, eine richtige Antwort zu erhalten, wenn meine nach anderen Personen mit 1000-mal mehr Ansehen als ich aufgeführt wird, obwohl meine Antwort richtig war und als richtige Antwort gewertet werden sollte.

0 Stimmen

Wenn eine Antwort akzeptiert wird, wird sie zuerst angezeigt. Danach sehen die Benutzer die Antworten in der Reihenfolge, die sie ausgewählt haben (älteste|neueste|Stimmen). Ich glaube, die Sortierung nach Stimmen ist die Standardeinstellung. Ihre Antwort ist die älteste und in Ordnung, aber die von Adam ist eindeutiger.

0 Stimmen

Entschuldigung. Meine Antwort lag immer unter Ihrer, auch wenn wir den gleichen Stimmwert hatten. Jemand hat meine Antwort um eine Stimme nach oben gestuft, und erst dann wurde meine Antwort an erster Stelle aufgeführt. Später hat der Fragesteller meine Antwort akzeptiert, so dass sie nun an erster Stelle steht.

7voto

Paul Tomblin Punkte 172816

a += 2; ist das Äquivalent zu a = a + 2;

Bei einigen Sprachen (insbesondere bei sehr alten C-Compilern) erzeugte der Compiler mit der ersten Option besseren Code. Das ist heute noch so, weil es ein gängiges Idiom ist und die Leute daran gewöhnt sind, dass es klarer ist.

0 Stimmen

Es ist schneller geschrieben, vor allem bei langen Variablennamen. Deshalb wird sie immer noch verwendet. Dasselbe gilt für i++, was wiederum eine Abkürzung für i+=1 ist. Es wird nur ein Zeichen eingespart, aber es ist viel einfacher zu schreiben, weil es nur zwei (statt drei) UNTERSCHIEDLICHE Zeichen gibt.

0 Stimmen

Ich benutze es, und ich habe nie darüber nachgedacht, aber es scheint, dass "schneller zu tippen" manchmal eine schlechte Optimierung ist - es ist eine schlüpfrige Piste zurück zu Ein-Buchstaben-Variablennamen und anderen Techniken des letzten Jahrhunderts.

0 Stimmen

Die Sache ist die, dass "a = a + 1;" im Vergleich zu "a += 1;" oder "++a;" wenig ausmacht. Allerdings ist "long_and_descriptive_array_name [descriptive_function(other_variable)] += 1;" ein Gewinn.

4voto

Die in Sente Punkte 9197

Es gibt viele dieser Kurzbefehle in C, C++ und anderen modernen Sprachen.

a -= b;   // a = a - b;
a *= b;   // a = a * b;
a &= b;   // a = a & b;

usw. usw. usw.

3voto

Peter Bailey Punkte 103278

Ich wollte nur hinzufügen, dass diese Informationen in der Tat auf der PHP-Website in dem Abschnitt über Betreiber oder genauer gesagt, Zuweisungsoperatoren .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X