Рассчитать возраст на основе информации о дате рождения в массиве JSON с помощью PHP - PullRequest
0 голосов
/ 24 марта 2011

Мне было интересно, как я мог бы использовать PHP для расчета возраста по заданной строке даты со значениями из массива JSON:

{  
    "DOB":{ // should I use integers or strings for these values? I'm assuming strings for now.  
        "year": "1970",  
        "month": "01",  
        "day": "01"  
    }  
}

Как мне тогда использовать PHP для вычисления возраста?
ДополнительноДопустим, вся эта информация представляет собой небольшую часть чего-то вроде справочника персонала с форматом { "People":{ "user1":{ label: value },"user2":{ label: value} } }.Как я могу использовать PHP для создания <label> тегов для label в <li> тегах для value (<li><label>label</label>value</li>) в неупорядоченных списках для каждого пользователя в div для каждого пользователя?
Пожалуйста, , скажите, если это не так;и вычисление возраста - мой самый высокий приоритет прямо сейчас.

Ответы [ 3 ]

1 голос
/ 24 марта 2011

Не уверен, правильно ли я понял, что вы пытаетесь сделать с пользователем, поэтому дайте мне знать, если я ошибся:

<?php
    $people = json_decode($data);
?>
<html>
    <head>
        <title>Users List</title>
    </head>
<body>
    <?php foreach ($people as $userName => $userInfo): ?>
    <div>
        <p><?php echo $userName; ?>
        <ul>
        <?php foreach ($userInfo as $label => $value): ?>
            <li><label><?php echo $label; ?></label> <?php echo $value; ?></li>
        <?php endforeach; ?>
        </ul>
    </div>
    <?php endforeach; ?>
</body>
</html>
1 голос
/ 24 марта 2011

Я предполагаю, что вы собираетесь использовать это:

http://php.net/manual/en/function.json-decode.php

преобразовать его в массив, который может использовать php.

<?php

$arr = json_decode('{"DOB":{"year": "1970", "month": "01", "day": "01"}}');
$year = $arr->DOB->year;
$month = $arr->DOB->month;
$day = $arr->DOB->day;

$today = date("Y-m-d"); 
$bday = date("Y-m-d",mktime(0, 0, 0, $month, $day, $year));

$today = new DateTime($today);
$bday = new DateTime($bday);
$age = $today->diff($bday)->y;

echo $age;


?>

Я думаю, это должно работать в PHP 5.3+.

0 голосов
/ 24 марта 2011

Примерно так:

<code><?php
$str = '{"DOB":{"year": "1970","month": "01","day": "01"}}';
$obj = json_decode($str);
$obj->DOB->year = intval($obj->DOB->year);
$obj->DOB->month = intval($obj->DOB->month);
$obj->DOB->day = intval($obj->DOB->day);
$yearD  = date("Y") - $obj->DOB->year;
$monthD = date("m") - $obj->DOB->month;
$dayD   = date("d") - $obj->DOB->day;
if ($dayD < 0 || $monthD < 0)
    $yearD--;
echo "<pre>";
echo $yearD;
echo "
"; ?>

Не учитывались високосные годы. Просто посчитай нет. високосных лет, и добавить столько дней.

А по поводу второго вопроса вы можете посетить это: Конвертировать JSON в HTML Tree

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...