Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 合并两个(或多个)数组并保留最高值?_Php_Oracle_Permissions_Usergroups - Fatal编程技术网

Php 合并两个(或多个)数组并保留最高值?

Php 合并两个(或多个)数组并保留最高值?,php,oracle,permissions,usergroups,Php,Oracle,Permissions,Usergroups,我有一个基于权限/组的设置,我正在尝试合并结果。例如,用户可能与四个组关联: | username | passwd | email | groups | | test_user | 9agb9 | test@test.com | g1, g2, g3, g4 | 分组表: | group | perm1 | perm2 | perm3 | perm4 | perm5 | perm5 | perm7 | | g1 | 1 | 0 | 0

我有一个基于权限/组的设置,我正在尝试合并结果。例如,用户可能与四个组关联:

| username  | passwd | email         | groups         |
| test_user | 9agb9  | test@test.com | g1, g2, g3, g4 |
分组表:

| group | perm1 | perm2 | perm3 | perm4 | perm5 | perm5 | perm7 |
| g1    | 1     | 0     | 0     | 0     | 1     | 0     | 2     |
| g2    | 0     | 0     | 0     | 1     | 0     | 0     | 0     |
| g3    | 0     | 1     | 0     | 0     | 2     | 0     | 0     |
| g4    | 0     | 0     | 0     | 0     | 1     | 1     | 0     |
我希望获得这四行的结果(作为DB查询中的数组存储),并将它们合并到一个数组中,如下所示:

| group    | perm1 | perm2 | perm3 | perm4 | perm5 | perm5 | perm7 |
| combined | 1     | 1     | 0     | 1     | 2     | 1     | 2     |
每个数组中的最高值将成为组合数组中的值。如果100条记录中有1条是“2”,其余的是“1”或“0”,那么结果中就需要“2”


我已经看过了array\u merge,但是它会根据指定给函数的变量顺序保留值。

您需要创建一个新的主数组,然后在子数组中循环,仅在
child['value']>master['value']时更新主数组。
可能您希望DB已经处理过这个问题:

SELECT MAX(perm1), MAX(perm2), MAX(perm3), MAX(perm4), MAX(perm5), MAX(perm6), MAX(perm7)
FROM group_perm_linking_table
WHERE group IN ('gr1', 'gr2', 'gr3', 'gr4')

最近不得不在PHP中做类似的事情:

  $new_array = array();
  foreach ($array_second as $key => $value) {
    if ($array_first[$key] > $array_second[$key]) {
      $new_array[$key] = $array_first[$key];
    }
    else {
      $new_array[$key] = $array_second[$key];
    }
  }
当然,这可以写得更简单一点,您可以使用三元运算符来缩短它,但是这个详细的显示说明了如何在语义上做得更好。这是相对快速的,我正在使用它来帮助合并数百个帐户设置一次没有问题