php - 我如何比较两个数组并将唯一记录添加到表中

标签 php mysql arrays

我正在尝试比较和添加从表 B 到表 A 的唯一记录,如果存在重复记录,则跳过重复记录,并在下一条记录上执行搜索,如果找不到匹配项,则添加它。 使用 [SalesDescription] 字段进行比较

我尝试使用 array_unique 和 array_differ、array_intersect,但这些函数都无法消除重复/对我不起作用。

这是添加数据的代码

  $records=array(
      'SalesDescription'         => $row['SalesDescription'],
      'SO Qty' => $row['Quantity'],
      'WO Qty'          => $row['Reference'],
      'SO Date'          => $row['TransactionDate'],
      'Color'         => $row['DistNumber'], 
      'SO#'         => $row['Reference'], 
      'Promised Date'         => $row['GoodThruDate'], 



     );

    $tv->addRecord($tableId, $records);//calls addRecord() function

表A:记录我想向其中添加数据的表

Array ( 
      [id] => 3054535376 
      [table_id] => 50240233993 
      [created] => 2014-10-30T09:52:15-0600 
      [updated] => 2014-10-30T09:52:15-0600 
      [created_by] => 3045444045538 
      [fields] => Array ( 
                        [Work Order] => 87565 
                        [SalesDescription] => 18X5X12 1/8 SOLID FORKLIFT TIRE PRESS-ONS 
                        [SO#] => 14061 
                        [SO Date] => 2013-10-16T00:00:00-0600 
                        [Promised Date] => 2014-10-30T09:52:15-0600 
                        [SO Qty] => 1.0000000000000000000 
                        [WO Qty] => 14061 
                        [Color] => 2 
                        [s] => 2 
                        [SHIP BY] => 2014-10-29 
                        [CALC PROMISED DATE] => 2014-10-30 
                        ) 
   ) 

表B:记录我想从中获取数据的表

 Array ( 
       [0] => CAS001 
       [CustomerId] => CAS001 
       [1] => CASH CUSTOMER 
       [Customer_Bill_Name] => CASH CUSTOMER 
       [2] => Will Call 
       [WhichShipVia] => Will Call 
       [3] => [INV_POSOOrderNumber] => [4] => 2013-07-24 
       [ShipByDate] => 2013-07-24 
       [5] => [GoodThruDate] => [6] => [CustomerSONo] => [7] => 13867 
       [Reference] => 13867 [8] => 2013-07-24 
       [TransactionDate] => 2013-07-24 
       [9] => 1 
       [DistNumber] => 1 
       [10] => 2.0000000000000000000 
       [Quantity] => 2.0000000000000000000 
       [11] => 121130581 
       [ItemId] => 121130581 
       [12] => 18X5X12 1/8 SOLID FORKLIFT TIRE PRESS-ONS 
       [SalesDescription] => 18X5X12 1/8 SOLID FORKLIFT TIRE PRESS-ONS 
       [13] => [PartNumber] => [14] => 18X5X12 1/8 SOLID FORKLIFTTIRE 
       [ItemDescription] => 18X5X12 1/8 SOLID FORKLIFTTIRE
       ) 

最佳答案

这有点麻烦,但您可以先创建一个包含键(即 SalesDescription 值)的数组。 Double SalesDescription 将互相覆盖,然后您将其转换回来:

<?php

$tableB = array(....)

$temp = array();
foreach($tableB as $value) {
  $temp[$value['SalesDescription']] = $value;
}
$tableB = array();
foreach($temp as $value) {
  $tableB[] = $value;
}

// Now $tableB has only unique SalesDescription's!

关于php - 我如何比较两个数组并将唯一记录添加到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26659586/

相关文章:

php - 如何在json数组codeigniter中创建json数组

php - 如何在 Synology 上用 PHP 和 MYSQL 本地连接 MariaDB5?

c - 使用 C 将 CFG 从文件读取到链表中

javascript - 摆脱对象数组中的重复项

mysql - 如何在 MySQL 的搜索中使用 @ 进行 LIKE 搜索?

javascript - 需要输入字段内的字段描述而不发送它

php - 获取已从中声明/需要类的文件

php - 从php中的日期检索日期,月份,年份

arrays - Ruby - 数组中非相邻整数的最大数组总和

php - 在 Magento 中生成自定义 url