以下是一个使用PHP编写的简单示例,用于计算用户留存率。在这个例子中,我们假设有一个用户注册表,包含用户的注册日期和最后活跃日期。我们将计算在一定时间段内,注册后仍然活跃的用户比例。
```php
// 假设这是从数据库获取的用户数据
$users = [
['email' => 'user1@example.com', 'registered_on' => '2021-01-01', 'last_active_on' => '2021-01-31'],
['email' => 'user2@example.com', 'registered_on' => '2021-01-01', 'last_active_on' => '2021-02-28'],
['email' => 'user3@example.com', 'registered_on' => '2021-01-01', 'last_active_on' => '2021-03-01'],
['email' => 'user4@example.com', 'registered_on' => '2021-01-01', 'last_active_on' => '2021-02-28'],
['email' => 'user5@example.com', 'registered_on' => '2021-01-01', 'last_active_on' => '2021-03-01'],
['email' => 'user6@example.com', 'registered_on' => '2021-01-01', 'last_active_on' => '2021-03-01'],
['email' => 'user7@example.com', 'registered_on' => '2021-01-01', 'last_active_on' => '2021-02-28'],
['email' => 'user8@example.com', 'registered_on' => '2021-01-01', 'last_active_on' => '2021-01-31'],
];
// 设定观察期,例如30天
$observation_period = 30;
// 计算注册时间距今的天数
function daysSinceRegistration($registered_on) {
$date1 = new DateTime($registered_on);
$date2 = new DateTime(date('Y-m-d'));
return $date1->diff($date2)->days;
}
// 计算最后活跃时间距今的天数
function daysSinceLastActive($last_active_on) {
$date1 = new DateTime($last_active_on);
$date2 = new DateTime(date('Y-m-d'));
return $date1->diff($date2)->days;
}
// 计算留存用户数
$active_users = 0;
foreach ($users as $user) {
if (daysSinceRegistration($user['registered_on']) <= $observation_period) {
if (daysSinceLastActive($user['last_active_on']) <= $observation_period) {
$active_users++;
}
}
}
// 计算留存率
$RetentionRate = ($active_users / count($users)) * 100;
// 输出结果
echo "