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