我试图从第二个数组中获取与第一个数组中的关联元素相匹配的值。
$array1
只能(最多)与符合条件的 sr_no
和 batch_id
值匹配一行,因为这两列的组合将始终提供独特性。 换句话说,当找到匹配项时,剩余数据中就没有机会再进行匹配。
$array1 = ['sr_no' => 72, 'batch_id' => 1];
$array2 = [
['quantity' => 22, 'sr_no' => 71, 'batch_id' => 2, 'inq_id' => 91],
['quantity' => 35, 'sr_no' => 72, 'batch_id' => 1, 'inq_id' => 92],
['quantity' => 20, 'sr_no' => 69, 'batch_id' => 3, 'inq_id' => 90],
];
预期输出:
['quantity' => 35, 'sr_no' => 72, 'batch_id' => 1, 'inq_id' => 92]
我尝试使用 $result = array_diff_assoc($array2, $array1);
,但它打印了整个 $array2
数组值。
最佳答案
一旦找到匹配项,您就应该停止迭代。
如果您的 $array1
设计灵活,请使用 array_intersect_assoc()
返回匹配元素,然后检查是否找到所有必需的匹配项。
代码:(Demo)
$array1 = ['sr_no' => 72, 'batch_id' => 1];
$array2 =
[
['quantity' => 22, 'sr_no' => 71, 'batch_id' => 2, 'inq_id' => 91],
['quantity' => 35, 'sr_no' => 72, 'batch_id' => 1, 'inq_id' => 92],
['quantity' => 20, 'sr_no' => 69, 'batch_id' => 3, 'inq_id' => 90],
];
$result = null;
foreach ($array2 as $row) {
if (array_intersect_assoc($array1, $row) === $array1) {
$result = $row;
break;
}
}
var_export($result);
输出:
array (
'quantity' => 35,
'sr_no' => 72,
'batch_id' => 1,
'inq_id' => 92,
)
关于php - 使用包含两个元素的关联数组在多维数组中搜索唯一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66838889/