Ответ 1
Он добавляет все эти значения во времени.
something += somethingelse
является ярлыком для
something = something + somethingelse
-Adam
Я думаю, что это глупый вопрос, но я не мог найти его на php. Почему + с = в следующем коде:
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();
}
Является ли это так, что $time имеет все эти значения или, скорее, добавляет все значения в $time?
Спасибо
Он добавляет все эти значения во времени.
something += somethingelse
является ярлыком для
something = something + somethingelse
-Adam
$time += $diff['hours'];
- это то же самое, что сказать
$time = $time + $diff['hours'];
a += 2;
является эквивалентом a = a + 2;
В свое время с некоторыми языками (особенно очень старыми компиляторами C) компилятор создавал лучший код с первым вариантом. Он теперь крутится, потому что это обычная идиома, и люди привыкли к этому, что это ясно.
Есть много таких сокращенных операторов в C, С++ на других современных языках.
a -= b; // a = a - b;
a *= b; // a = a * b;
a &= b; // a = a & b;
и т.д. и т.д. и т.д.
x + = 10 - это просто более короткий способ написать x = x + 10.
В этом случае код находит разницу во времени в часах от структуры разности во времени.
Оператор ярлыков для $val = $val + $otherval.
Это работает только с числовыми значениями
Позвольте заменить несколько вещей, чтобы сделать это немного легче понять.
+ = - это то же самое, что и ниже:
$time = $diff['days'] * 24;
$time = $time + $diff['hours'];
$time = $time + ($diff['minutes'] / 60);
$time = $time + (($diff['seconds'] / 60)/60);
Я просто хотел добавить, что эта информация действительно находится на веб-сайте PHP в разделе operators или, более конкретно, операторы присваивания.
Кроме того, "a + = b" - выражение, значение которого может быть использовано снова сразу,
(((((a += b) *= c) += d) * e) += f);
намного меньше печатается, чем
a = a + b;
a = a * c;
a = a + d;
a = a * e;
a = a + f;
Если оба операнда являются массивами, $a += $b
также является сокращением для array_merge($a, $b)
. Эта функция объединяет два массива в один, отбрасывая любой ключ в $b
который уже существует в $a
.
$arr1 = array(4 => "four", 1 => "one", 2 => "two");
$arr2 = array("three", "four", "five");
$arr1 += $arr2;
print_r ($arr1);
// outputs:
Array
(
[4] => four
[1] => one
[2] => two
[0] => three
)
$arr1 = array(4 => "four", 1 => "one", 2 => "two");
$arr2 = array("three", "four", "five");
$arr2 += $arr1;
print_r ($arr2);
// outputs:
Array
(
[0] => three
[1] => four
[2] => five
[4] => four
)
Почему каждое тело идет простым способом, если мы используем + = или - = или любую комбинацию из более чем одного оператора, означает, что мы выполняем некоторые действия самым быстрым способом, например если вы делаете a = a + b здесь компилятор генерирует 2 токена для a и 1 для b, чем добавляет это значение, и сохраняет его бит сложный и трудоемкий процесс но если u do a = + b здесь у нас есть всего 2 токена и его аналогичная бит-мудрая работа, которая работает быстро. для более подробной информации о кодировании на уровне компилятора или работе кода, с которым вы можете связаться по моему идентификатору, который является [email protected]