Array
(
[0] => Array
(
[0] => Array
(
[0] => comments
)
[1] => Array
(
[0] => approve
[1] => delete
)
)
[1] => Array
(
[0] => Array
(
[0] => users
)
[1] => Array
(
[0] => info
[1] => ban
)
)
)
我有这个阵列。我想检查此用户组是否具有这些权限。在这个数组中还有另外两个数组。第一个是类别,而第二个是包含连接到该部分的操作的数组。例如:我在这个组中,所以我可以在管理面板中看到“评论”部分,我可以批准和删除评论,但我无法编辑评论,因为此操作不在数组中。好吧,我知道这有点难以理解,但我需要你的帮助。 (im italian)< 3
答案 0 :(得分:0)
首先,我建议你理智地使用命名的数组键而不是数字键。
然后将使用PHP in_array()
所以你可以这样做:
$myArray = <your original array>;
foreach($myArray as $row){
if(in_array("delete",$row[1])){
print "Delete is in array. you can edit ".$row[0][0];
}
}
unset($row);
<强>输出:强>
Delete is in array. you can edit comments.
//no output for array "users" as can't delete users.
答案 1 :(得分:0)
像这样的小型递归函数可能很方便。它检查子元素是否为数组。
function checkarrayRec($array,$permissions=["info","ban","delete","approve"]) {
if(is_array($array)) {
foreach($array as $key => $a) {
if(is_array($a)) {
checkarrayRec($a);
} else {
if(!empty($a) and in_array($a,$permissions)) {
echo "Found: ".$a."\n";
}
}
}
}
}
$array = [[[0,1],[1,2]],[[3,4],["delete","approve"]]];
checkarrayRec($array) ;
// output is
Found: delete
Found: approve
上查看
答案 2 :(得分:0)
要检查某些东西是否是数组的元素,您需要使用函数in_array
- 这需要两个参数,第一个是您要检查的元素,第二个是数组本身。
根据您的解释,您有三个嵌套数组,也就是说,数组内的数组内的数组。
提供第一个索引,因为这是用户的索引。 从$ myarray [userId]我们有两个嵌套数组 - 一个数组内的数组,索引已知,因为每个类别总有两个。这里有两种可能的情况:
由于结构原因,这两者都需要您遍历数组。查找权限是否属于特定类别只需在循环中进行额外检查。
查找权限是否属于任何类别:
foreach ($myArray[$userId] as $permissionCategory) {
return in_array("permission", $permissionCategory[1]);
}
return false;
查找权限是否属于特定类别:
foreach ($myArray[$userId] as $permissionCategory) {
if ($permissionCategory[0][0] == "category") {
return in_array("permission", $permissionCategory[1]);
}
}
return false;
答案 3 :(得分:0)
Martin工作的帮助......唯一的问题是我不知道数组编号(in_array(“delete”,$ row [1])。实际上我有这个字符串定义了特定组的权限哪些用户属于:评论:批准,删除|用户:信息,禁止
此字符串通过爆炸转换为数组,删除“/:”
那我们就有了:
评论 - &gt;与本CAT相关的许可:批准删除
用户 - &gt;与此CAT连接的权限:信息(请参阅用户信息)禁止(禁止用户)
但我可以在字符串中添加其他元素,所以我无法知道数组编号。
答案 4 :(得分:-1)
<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix";
}
elseif (in_array("mac", $os)) {
echo "Got mac";
}
else{
echo "Not found";
}
?>