php - 检查一个数组中的任何项是否包含在另一个数组中的任何项中
问题描述
我有一系列订阅/计划(访问级别):
define('PLAN_A', 0); // 0001
define('PLAN_B', 2); // 0010
define('PLAN_C', 4); // 0100
define('PLAN_D', 8); // 1000
define('PLAN_E', 16); // 10000
用户可以订阅一个或多个计划。
$user_one = array(PLAN_A, PLAN_C); // is subscribed to two plans
$user_two = array(PLAN_C); // is only subscribed to one plan
一个“流程”需要一个特定的订阅计划级别 - 或多个计划级别:
$process_1 = array(PLAN_B); // requires only PLAN_B subscripton
$process_2 = array(PLAN_B, PLAN_D); // requires either PLAN_B or PLAN_C subscription
我想检查是否$user_one
有'权限'访问$process_1
,并单独检查是否$user_one
有权访问 $ process_2
。并对$user_two
. (“权限”是指用户是否拥有流程所需的订阅计划。)
看起来我需要检查流程的订阅要求中是否包含任何用户计划订阅(一个或多个)。
我尝试使用按位检查(这就是 PLAN 具有二进制值的原因),但这仅适用于$process_1
. 如何检查是否$user_1
可以访问$process_2
?或者,如何检查用户数组的任何值是否包含在流程需求数组的任何值中?
解决方案
您可以使用一些功能来完成这项工作,如下所示:
function UserPlanHaveRequiredSub($user_plans,$process): bool
{
foreach($user_plans as $plan){
if (in_array($plan,$process)){
return true;
}
}
return false;
}
然后你可以像这样传递用户计划和过程:
$result = UserPlanHaveRequiredSub($user_one,$process_2 );
var_dump($result);// will return true or false .
推荐阅读
- python - Pandas split-apply-combine,为什么在排序时结合 pd.concat([df]) 起作用?
- jquery - 如何使用 jQuery 更改多个克隆的 HTML 元素的属性值?
- mysql - 无法创建与数据库的连接 (ColdFusion)
- mysql - 使用 Promise 使用 Node.JS 和 MySQL 生成 Tree 结果
- python - 带有 cx_Freeze 的 Pyserial 运行时错误
- googlebot - 谷歌真的想找到 admin.php 吗?
- google-analytics - 如何在 BigQuery 的表格中添加适当的平台(hits.datasource)?
- javascript - 从url下载pdf,保存在文件中,压缩然后下载zip
- azure-servicebus-topics - Azure 主题订阅订阅者
- .htaccess - 如何使用查询字符串将 URL 条目重定向到特定文件?