如何在php中匹配数组?

如何在php中匹配数组?,php,arrays,Php,Arrays,我有2个数组,我希望匹配此数组并使用键获得结果。 我可以用第二个数组键在第一个数组中搜索还是以不同的方式匹配 $boardLists = [ [ '_id' => 'a1a1a1', 'name' => 'Board Name #1', 'code' => 'B1' ], [ '_id' => 'b2b2b2', 'name' => 'Board Name #2', 'code' => 'B2 ]

我有2个数组,我希望匹配此数组并使用键获得结果。 我可以用第二个数组键在第一个数组中搜索还是以不同的方式匹配

$boardLists = [
  [
    '_id' => 'a1a1a1',
    'name' => 'Board Name #1',
    'code' => 'B1'
  ],
  [
    '_id' => 'b2b2b2',
    'name' => 'Board Name #2',
    'code' => 'B2
  ]
];

我与数组_相交的结果:

如果匹配“A1A1”,则我的预期结果为:

[
  '_id' => 'a1a1a1',
  'name' => 'Board Name #1',
  'code' => 'B1'
],

将第一个数组的数组索引设置为_id会更有效。但是,按照当前设置数组的方式,您可以执行以下操作:

foreach($boards as $key1=>board){
    foreach($boardLists as $key2=>$boardList){
        if($boardList['_id']==$key1){
                echo $key1 . PUP_EOL;
                print_r($boardList);
        }
    }
}

将第一个数组的数组索引设置为_id会更有效。但是,按照当前设置数组的方式,您可以执行以下操作:

foreach($boards as $key1=>board){
    foreach($boardLists as $key2=>$boardList){
        if($boardList['_id']==$key1){
                echo $key1 . PUP_EOL;
                print_r($boardList);
        }
    }
}

我可以理解,您希望根据第二个数组中的内容在第一个数组中搜索,因此下面是一个示例:

$boardLists = [
  [
    '_id' => 'a1a1a1',
    'name' => 'Board Name #1',
    'code' => 'B1'
  ],
    [
    '_id' => 'b2b2b2',
    'name' => 'Board Name #2',
    'code' => 'B2' 
  ]

];

$boards = [
  'a1a1a1',
  'b2b2b2',
  'c3c3c3'
];
$boardListIds = array_column($boardLists, '_id');

$results = [];
foreach ($boards as $board) {
  $find_key = array_search($board, $boardListIds);
  if($find_key !== false)
    $results[] = $find_key;
}

#printing the results
foreach ($results as $result) {
  print_r($boardLists[$result]);
}

有很多方法可以做到这一点,这只是其中之一。我希望这能有所帮助

我可以理解您希望根据第二个数组中的内容在第一个数组中搜索,因此下面是一个示例:

$boardLists = [
  [
    '_id' => 'a1a1a1',
    'name' => 'Board Name #1',
    'code' => 'B1'
  ],
    [
    '_id' => 'b2b2b2',
    'name' => 'Board Name #2',
    'code' => 'B2' 
  ]

];

$boards = [
  'a1a1a1',
  'b2b2b2',
  'c3c3c3'
];
$boardListIds = array_column($boardLists, '_id');

$results = [];
foreach ($boards as $board) {
  $find_key = array_search($board, $boardListIds);
  if($find_key !== false)
    $results[] = $find_key;
}

#printing the results
foreach ($results as $result) {
  print_r($boardLists[$result]);
}
有很多方法可以做到这一点,这只是其中之一。我希望这能有所帮助

试试这个

$finalArray = array();
foreach($boardLists  as $key=>$val):
    if(in_array($val['_id'],$boards))
    {
        $finalArray[] = $val2;
    }
endforeach;
试试这个

$finalArray = array();
foreach($boardLists  as $key=>$val):
    if(in_array($val['_id'],$boards))
    {
        $finalArray[] = $val2;
    }
endforeach;

添加您期望的结果。@prasannaputtaswamy我添加了一个基本的结果,您将拥有多维数组1和另一个数组1。你想比较一下。返回与array2匹配的数组。是吗correct@prasannaputtaswamy是的,完全正确。boards有两个匹配的A1A1和B1B1,而您在Resultad中只提到了一个,您的预期结果是什么。@Prasanaputtaswamy我补充道,基本上您将有多维数组1和另一个数组1。你想比较一下。返回与array2匹配的数组。是吗correct@prasannaputtaswamy没错。电路板有两个匹配的A1A1和B1B1,而您在结果中只提到了一个