【发布时间】:2019-03-19 03:27:22
【问题描述】:
我有 2 个数组 $group_permissions 和 $result 在循环 $result 数组时,我将来自 $group_permissions 数组的 $group_permissions[$keys]->perm_id 与来自 $result 数组的 $result[$keys]->id 进行比较。
但$group_permissions 数组中的记录少于$result 数组中的记录。所以循环时发生错误
消息:未定义的偏移量:14
$result array
Array
(
[0] => stdClass Object
(
[id] => 1025
[name] => Library Membership
[permission_code] => library_membership
[hash_code] => 7f7758029e0b3b7f0154e98779f66082
[description] => Library Membership
[parent_id] => 0
[level] => 1
[sequence] => 10000
[is_child] => 0
)
[1] => stdClass Object
(
[id] => 514
[name] => Member Profiles
[permission_code] => mem_pro
[hash_code] => f3e3f0150a0172eca3f3279f9d3919d6
[description] => Member Profiles
[parent_id] => 0
[level] => 1
[sequence] => 10008
[is_child] => 0
)
$group_permissions array
Array
(
[0] => stdClass Object
(
[perm_id] => 1321
)
[1] => stdClass Object
(
[perm_id] => 1322
)
[2] => stdClass Object
(
[perm_id] => 1323
)
[3] => stdClass Object
(
[perm_id] => 1324
)
这是我的代码。
$group_permissions = $this->get_group_permissions($user_id);
$result = $this->getPermisstions();
$parent_id = array();
foreach ($result as $keys => $row)
{
$sub_data["id"] = $result[$keys]->id;
$sub_data["text"] = $result[$keys]->name;
if ($group_permissions[$keys]->perm_id == $result[$keys]->id) {
$sub_data["state"] = ['selected' => true, 'disabled' => true];
}
array_push($parent_id, $result[$keys]->id);
$data[] = $sub_data;
}
如果 2 个数组中有相等的值,我想将此 $sub_data["state"] = ['selected' => true, 'disabled' => true]; 添加到 $sub_data 数组中。
【问题讨论】:
-
为什么要依赖基于相同键的项目是否具有相同的 ID?实际的数据结构是什么?为什么只有在相等时才添加
state数组?我会以更一致的方式执行后者,以确保有一些state数组始终具有某些键。这一切都可能适用于底层结构,但是,它可能不是一种有效的方法。 -
您应该提供更多信息以获得更合适的答案。
-
请提供输入数组数据并告诉我们需要检查/比较的内容。仅理解文本和代码是困难的。我正在投票,所以你可以改进你的问题。这个问题将来也可能对其他人有用。
-
@Jigar 问题使用输入数组更新,我想检查 perm _id 是否在 $reult 数组中(如果可用)我想设置 $sub_data["state"] = ['selected' => true, '禁用' => true];
标签: php arrays foreach compare