Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Проблема в вашей функции getAge()
, и это должно быть очевидно, если вы посмотрите на столбец возраста в вашей таблице. Ваш код:
function getAge($date)
{
return intval(substr(date('Ymd') - date('Ymd', strtotime($date)), 0, -4));
}
Функция date [) PHP возвращает строку в формате 'YYYMMDD'
. У вас их два, и вы их вычитаете. Предположим, что это '20190414'
и '20020321'
, вычитание их приведет к 170093
, а если взять последние два символа с substr()
, то вам будет 93
для кого-то, кто родился в 2002 году. Вы не заметили что?
Итак, давайте напишем лучшую getAge()
функцию. Работать точно со временем сложно. Однако на самом деле внутри PHP есть функция для вычисления разницы дат:
https://www.php.net/manual/en/datetime.diff.php
Если мы используем это для создания функции, мы получим:
function getAge($dateStr)
{
$birthDate = new DateTime($dateStr); // check the valid formats in the manual!
$currentDate = new DateTime();
return $birthDate->diff($currentDate, true)->y; // return difference in years
}
Эта функция может быть написана в одной строке кода вместо трех, но это будет сложнее читать, поэтому не делайте этого.
Это работает для вас? В вашем коде могут быть и другие ошибки, хороший способ отладки ошибок Javascript - взглянуть на ваши инструменты разработчика .
Оказывается, что я должен был изменить порядок, в котором я добавил внешний jQuery/начальную загрузку/таблицы данных js сценарии.
спасибо за Вашу справку.