php - 使用包含两个元素的关联数组在多维数组中搜索唯一行

标签 php arrays search multidimensional-array filtering

我试图从第二个数组中获取与第一个数组中的关联元素相匹配的值。

$array1 只能(最多)与符合条件的 sr_nobatch_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/

相关文章:

php - 从 dovecot/postfix 上的 php 脚本创建一个新的电子邮件帐户

C++数组结构

regex - 使用 Exchange Web 服务进行正则表达式信用卡搜索?

C++ 从数字数组创建 png/位图

PHP array_unique 转换为对象

C++在学生列表中搜索和排序

performance - 在数字范围列表中搜索数字

php - PHP 中的事件驱动架构和 Hook

php - 如何在laravel blade文件中水平打印我的元素成员头像?

php - 我在我的 ubuntu 上安装了 phpmyadmin 但它不工作