Php 如何检查给定三个数组中的条件

Php 如何检查给定三个数组中的条件,php,arrays,multidimensional-array,php-5.6,Php,Arrays,Multidimensional Array,Php 5.6,我有三个阵列 选题 相关群体 主题化 $topicsSelected=[“T-100”、“T-600”]; $relaventgroups=[[“id”=>“G-001”、“name”=>“3A”、“active”=>false]、“id”=>“G-002”、“name”=>“3B”、“active”=>false]; $topicassigned=[ “G-001”=>[ “组ID”=>“G-001”, “groupName”=>“3 A”, “主题”=>[ “T-100”=>[ “topic

我有三个阵列

  • 选题
  • 相关群体
  • 主题化
  • $topicsSelected=[“T-100”、“T-600”];
    $relaventgroups=[[“id”=>“G-001”、“name”=>“3A”、“active”=>false]、“id”=>“G-002”、“name”=>“3B”、“active”=>false];
    $topicassigned=[
    “G-001”=>[
    “组ID”=>“G-001”,
    “groupName”=>“3 A”,
    “主题”=>[
    “T-100”=>[
    “topicID”=>“T-100”
    ],
    “T-200”=>[
    “topicID”=>“T-200”
    ]
    ]
    ],
    “G-002”=>[
    “组ID”=>“G-002”,
    “groupName”=>“3 B”,
    “主题”=>[
    “T-400”=>[
    “topicID”=>“T-400”
    ],
    “T-500”=>[
    “topicID”=>“T-500”
    ]
    ]
    ],
    ];
    
    $topicsSelected数组值(T-100或T-600)$TopicsAssigned数组中应根据groupID(G-001)至少存在一个值$主题在主题下命名,主题ID:T-100是存在的,因此
    禁用:D

    $topicsSelected数组值(T-100或T-600)$TopicsAssigned数组中应根据groupID(G-002)至少存在一个值$主题在主题下命名,主题ID:T-100和T-600不存在,因此
    禁用:A

    预期产出:

    [
         "id": "G-001",
        "name": "3 A",
        "active": false,
        "Disable" : "D"
    ],
    [
         "id": "G-002",
        "name": "3 B",
        "active": false,
        "Disable" : "A"
    ]
    
    我的代码


    你可以试试这个片段

    Array
    (
        [0] => Array
            (
                [id] => G-001
                [name] => 3 A
                [active] => 
                [disable] => D
            )
    
        [1] => Array
            (
                [id] => G-002
                [name] => 3 B
                [active] => 
                [disable] => A
            )
    
    )
    
    -计算数组的交集
    -返回数组的所有键或键的子集

    输出


    你能再解释一下吗?第三个数组比较代码在哪里?你面临的问题是什么?这里我只看到活动元素是空的,禁用是不同的?我说得对吗?你能给出所有三个数组的JSON格式吗,这样我们就可以在我们这边试试了?解释一下你做了什么,以及为什么它解决了OP的问题,这对帮助其他人理解你的解决方案总是很有用的。
        Array
    (
        [0] => Array
            (
                [id] => G-001
                [name] => 3 A
                [active] => 
                [disable] => D
            )
    
        [1] => Array
            (
                [id] => G-002
                [name] => 3 B
                [active] => 
                [disable] => D
            )
    
    )
    
    foreach ($relavantGroups as &$g) {
        $found = false;
        foreach ($topicAssingned as $key => $assigned) {
            if ($key === $g["id"]) {
                $temp  = array_keys($assigned['topics']); // fetching all topic ids
                $intr  = array_intersect($topicsSelected, $temp); // checking if there are any matching values between topicSelected and traversed values
                $found = (!empty($intr) ? true : false); // if found return and break
                break;
            }
        }
        $g["disable"] = $found ? "D" : "A";
    }
    print_r($relavantGroups);
    
    Array
    (
        [0] => Array
            (
                [id] => G-001
                [name] => 3 A
                [active] => 
                [disable] => D
            )
    
        [1] => Array
            (
                [id] => G-002
                [name] => 3 B
                [active] => 
                [disable] => A
            )
    
    )