1

我有两个多维数组,例如:

array(
  'a' => array(
    'code1' => array('v1', 'v2'),
    'code2' => array('v1', 'v2')
  ),
  'b' => array(
    'code3' => array('v1', 'v2'),
    'code4' => array('v1', 'v2'),
    'code5' => array('v1', 'v2'),
    'code6' => array('v1', 'v2')
  )
)

array(
  'a' => array(
    'code1' => '',
  ),
  'b' => array(
    'code5' => ''
  )
)

我想要的结果是:

array(
  'a' => array(
    'code1' => array('v1', 'v2')
  ),
  'b' => array(
    'code5' => array('v1', 'v2')
  )
)

我很确定可以使用内置的 php 函数之一,但是我坚持使用它,找不到解决方案,而是手动遍历数组。你能帮我解决这个问题吗?

4

1 回答 1

1

如果两个数组的键值不完全匹配,确切的解决方案将取决于您想要发生的情况,但是达到所需结果的一种方法是:

$a = array(
  'a' => array(
    'code1' => array('v1', 'v2'),
    'code2' => array('v1', 'v2')
  ),
  'b' => array(
    'code3' => array('v1', 'v2'),
    'code4' => array('v1', 'v2'),
    'code5' => array('v1', 'v2'),
    'code6' => array('v1', 'v2')
  )
);

$b = array(
  'a' => array(
    'code1' => '',
  ),
  'b' => array(
    'code5' => ''
  )
);

$result = array();
foreach ($a as $key => $data) {
    $result[$key] = array_intersect_key($data, $b[$key]);
}

这个想法是用来array_intersect_key只保留那些$a出现(作为键)在$b.

于 2013-10-09T10:15:07.933 回答