首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >array_intersect不同值

array_intersect不同值
EN

Stack Overflow用户
提问于 2020-04-18 05:50:03
回答 1查看 54关注 0票数 0

我使用array_intersect比较两个数组

代码语言:javascript
复制
    $myArray = array(
      array(
        'site_id'  => 'S6407', 
        'tssr_id'  => 'TSSRBOQ-200204-0145-59'
      ),
      array(
        'site_id'  => 'S5910', 
        'tssr_id'  => 'TSSRBOQ-200204-0145-8'
      ),
    );

    // $items_tssr is get from another variable
    foreach ($items_tssr as $key => $value) {
      $array_validate[] = array(
        'site_id' => $value['site_id'],
        'tssr_id' => $value['no_tssr_boq_site']
      );
    }

    $result = array_map('unserialize',
              array_intersect(
                  array_map('serialize', $myArray), array_map('serialize', $array_validate)));
    // if there are same 
    if(array_key_exists(0,$result)){
      echo 'process this';
    }else{
      echo 'dont process this';
    }

我的问题是,原来的$myArray不仅仅是site_id和tssr_id

代码语言:javascript
复制
$myArray_origin = array(
          'site_id' => 'S6407',
          'tssr_id'  => 'TSSRBOQ-200204-0145-59'
          'site_name' => 'Site S6407',
          'id_site_doc'=> '127361,
          'implementation_id' => 'imp4121',
          'status' => "implementation_created",
          "endstate" => false
   ),
...

如何在不丢弃一些值的情况下处理$myArray_origin?因为$array_validate只有两个值'site_id‘和'tssr_id’

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-18 06:10:34

您可以使用array_filter + in_array代替。这将只保留site_idtssr_id存在于array_validate自己的条目中的条目:

代码语言:javascript
复制
$result = array_filter($myArray, function (array $entry) use ($array_validate): bool {
  return in_array([
    'site_id' => $entry['site_id'], 
    'tssr_id' => $entry['tssr_id']
  ], $array_validate, true);
});

演示:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61284762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档