我有两个数组 $firstarray 和 $secondarray 如下:
$firstarray = [
[
'id' => 1.25,
'Name' => 'rose',
'Number' => 15,
'DOB' => [
[
'Day' => 13,
'Month' => 5,
'Year' => 1993
]
],
'SSN' => [12345, 3455]
],
[
'id' => 1.15,
'Name' => 'orchid',
'Number' => 7,
'DOB' => [
[
'Day' => 3,
'Month' => 7,
'Year' => 1912
]
],
'SSN' => [12363, 3465]
],
];
和
$secondarray = ['Day' => 13, 'Month' => 5, 'Year' => 1993];
我想通过将 DOB 数据与第二个数组数据进行比较来过滤第一个数组。
foreach ( $firstarray as $item ) {
print_r(array_intersect_assoc( $secondarray, $item );
}
我的问题是两个数组应该只在第一次迭代时相交,但我的代码在所有迭代上都相交。我认为它只是相交的键,即日、月、年。如何检查值是否也匹配?
这就是您要找的吗
$result = array();
foreach ( $firstarray as $item ) {
$instersectArray=array_intersect_assoc($secondarray,$item['DOB'][0]);
if($instersectArray){
$result[] = $item;
}
}
print_r($result);
检查演示
如果您只需要一场比赛
$result = array();
foreach ( $firstarray as $item ) {
$instersectArray=array_intersect_assoc($secondarray,$item['DOB'][0]);
if($instersectArray && empty($result)){
$result[] = $item;
}
}
print_r($result);
检查演示