以下是一个使用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 "