Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как исправить Fatal error в скрипте?

Как исправить Fatal error в скрипте?


     12.06.2019    Все вопросы » Общие вопросы по PHP    64

вопрос
Здравствуйте, под спойлером скрипт подсчета возраста.

Добавил preg_match, данные берутся с доп. поля [data_birthday]. Подключаю через include в полной новости.


Не знаю, на сколько правильно, но в полной новости, где заполнено поле [data_birthday], скрипт правильно считает, а в новостях, где доп. поле не заполнено, выходит ошибка - Fatal error: Call to a member function diff() on a non-object...
---
Помогите, пожалуйста, исправить проблему, ничего не выходит.

Ответил: LazyDev


<?php
defined('DATALIFEENGINE') || die('good luck');
preg_match('/([0-9]{1,2})\.([0-9]{1,2}).([0-9]{1,4})/', $data_birthday, $match);

if ($match[1]) {
    $age = DateTime::createFromFormat('d/m/Y', $match[1] . '/' . $match[2] . '/' . $match[3])->diff(new DateTime('now'))->y;
    function YearTextArg($year) {
        $m = substr($year, -1, 1);
        $l = substr($year, -2, 2);
        return $year. ' ' .((($m==1)&&($l!=11))?'год':((($m==2)&&($l!=12)||($m==3)&&($l!=13)||($m==4)&&($l!=14))?'года':'лет'));
    }
    echo YearTextArg($age);
}
?>

2 комментария

LazyDev
php-developer

LazyDev - 12 июня 2019 15:20 -

<?php
defined('DATALIFEENGINE') || die('good luck');
preg_match('/([0-9]{1,2})\.([0-9]{1,2}).([0-9]{1,4})/', $data_birthday, $match);

if ($match[1]) {
    $age = DateTime::createFromFormat('d/m/Y', $match[1] . '/' . $match[2] . '/' . $match[3])->diff(new DateTime('now'))->y;
    function YearTextArg($year) {
        $m = substr($year, -1, 1);
        $l = substr($year, -2, 2);
        return $year. ' ' .((($m==1)&&($l!=11))?'год':((($m==2)&&($l!=12)||($m==3)&&($l!=13)||($m==4)&&($l!=14))?'года':'лет'));
    }
    echo YearTextArg($age);
}
?>

Мой блог: LazyDev.pro
Если мне не интересен вопрос, не помогаю, и за этим по контактам прошу не писать.

Mau
Юзер

Mau - 12 июня 2019 15:38 -

Спасибо за оперативный ответ!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх