php - 如何根据日期和 id 过滤掉 PHP 数组中的数据?
问题描述
我这里有一个用户数组,该数组有超过 2 个用户,每个用户数组都有一个registration_date、licence_expiry_date、性别、电子邮件、年龄和姓名。
数组看起来像这样。
$Users = Array(
(0) => Array
(
(id) => '100',
(name) => 'Name & Surname',
(email) => 'email@email.com',
(age) => '25',
(gender) => 'male',
(registration_date) => '2019-01-03',
(licence_expiry_date) => '2019-09-03',
),
(1) => Array
(
(id) => '101',
(name) => 'Name & Surname 1',
(email) => 'email1@email.com',
(age) => '22',
(gender) => 'male',
(registration_date) => '2019-03-03',
(licence_expiry_date) => '2019-02-03',
),
(2) => Array
(
(id) => '102',
(name) => 'Name & Surname 1',
(email) => 'email1@email.com',
(age) => '25',
(gender) => 'male',
(registration_date) => '2019-01-03',
(licence_expiry_date) => '2019-09-03',
),
(3) => Array
(
(id) => '103',
(name) => 'Name & Surname 3',
(email) => 'email3@email.com',
(age) => '25',
(gender) => 'male',
(registration_date) => '2019-08-03',
(licence_expiry_date) => '2019-10-03',
),
(4) => Array
(
(id) => '103',
(name) => 'Name & Surname 4',
(email) => 'email4@email.com',
(age) => '18',
(gender) => 'female',
(registration_date) => '2018-01-03',
(licence_expiry_date) => '2019-12-03',
),
);
我想要实现的是将其中的数据过滤到另一个数组但有一些条件。例如,我想将此过滤到仅年龄为 25 岁且 registration_date 在 2019-01-01 之后和 licence_expiry_date 在 2019-10-01 之前的用户。
预期结果将如下所示
$UsersFiltered = Array(
(0) => Array
(
(id) => '100',
(name) => 'Name & Surname',
(email) => 'email@email.com',
(age) => '25',
(gender) => 'male',
(registration_date) => '2019-01-03',
(licence_expiry_date) => '2019-09-03',
),
(2) => Array
(
(id) => '102',
(name) => 'Name & Surname 1',
(email) => 'email1@email.com',
(age) => '25',
(gender) => 'male',
(registration_date) => '2019-01-03',
(licence_expiry_date) => '2019-09-03',
),
);
解决方案
您可以使用array_filter
:
$UsersFiltered = array_filter($Users, function ($v) {
return $v['age'] == 25 &&
$v['registration_date'] > '2019-01-01' &&
$v['licence_expiry_date'] < '2019-10-01';
});
请注意,由于您的日期采用YYYY-MM-DD
格式,它们可以按字母顺序进行比较,而无需转换为DateTime
对象、时间戳或类似内容。
推荐阅读
- google-api - 谷歌云语音 API。帮助让 Google 自己的示例发挥作用
- python - 请求没有内容长度
- javascript - 以跨平台方式处理 React/React-Native 中的文本输入事件?(e.target.value 与 e.nativeTarget.text)
- python - 显示股价上下波动概率的熊猫系列函数
- python - 将两个字典合并到Python中的字典字典中
- swift - 滑动到下一张图片时,PageControl 没有动画
- html - 重定向时如何保留我的网站的标题和图标?
- javascript - 为屏幕中的大量视图反应原生性能
- html - 悬停在不同元素上的效果
- python - Python:如何迭代超过 2 个字典?