Арифметическая операция в строковой переменной php out

У меня странная проблема. Я сделаю это:

        $expdatek = explode(".",$datumk);
$expdated = explode(".",$datumd);
if($expdatek[2] == $expdated[2]){
$monthk = intval(ltrim($expdatek[1], '0'));
$monthd = intval(ltrim($expdated[1], '0'));
$interval = $monthd - $monthk;
}

Переменные $ datumk и $ datumd были представлены в следующем формате: «26.02.2016».
Я пытаюсь доказать, совпадает ли год, и если это произойдет, я просто хочу получить разницу между двумя месяцами.
По какой-то причине я не получаю никакого выхода из интервала $. Он просто не делает арифметическую операцию. Если я сделаю эхо, как: «echo $ monthd» и «echo $ monthk». Он правильно показывает месяцы без начального нуля, но он не выполняет арифметическую операцию.

Зачем?
Я думал, что PHP изменяет формат переменной на то, что ему нужно для выполнения этих операций. Я учу PHP на практике, и он всегда работал, даже сейчас. Я не понимаю это.
Есть намеки?

0

Решение

Если это дата, попробуйте использовать DateTime библиотека для выполнения арифметической операции. Метод DateTime :: дифф вычисляет разницу между двумя датами:

$date1 = \DateTime::createFromFormat("d.m.Y" , "27.03.2016");
$date2 = \DateTime::createFromFormat("d.m.Y" , "26.02.2016");

$diff = $date1->diff($date2 , true);

echo $diff->format("months: %m. Total days: %a");

Объект DateTime может предоставить строгое сравнение:

$date1 = \DateTime::createFromFormat("d.m.Y" , "26.02.2016");
$date2 = \DateTime::createFromFormat("d.m.Y" , "26.02.2016");

if ($date1 == $date2)
{
echo 'they\'re equals';
}

Если у вас есть какие-либо другие проверки, которые необходимы между обеими датами, можете ли вы DateTime :: формат:

$date1 = \DateTime::createFromFormat("d.m.Y" , "26.02.2016");
$date2 = \DateTime::createFromFormat("d.m.Y" , "26.02.2016");

if ($date1->format("m") == $date2->format("m"))
{
echo 'the months are equals';
}

Итак, если вам нужно сделать немного калькуляции:

$expdatek = \DateTime::createFromFormat("d.m.Y" , $datumk);
$expdated = \DateTime::createFromFormat("d.m.Y" , $datumd);

if($expdatek->format('Y') == $expdated->format('Y')){
$interval = $expdatek->diff($expdated , true);

var_dump($interval);
}
0

Другие решения

Код был в порядке. Проблема заключалась в том, что переменная была определена ранее в функции в виде строки. Я объявил об этом заново, но у него все еще были некоторые проблемы. Переименуй, решил проблему. спасибо вообще.

0

По вопросам рекламы [email protected]