Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何比较两个数组并向表中添加唯一的记录_Php_Mysql_Arrays - Fatal编程技术网

Php 如何比较两个数组并向表中添加唯一的记录

Php 如何比较两个数组并向表中添加唯一的记录,php,mysql,arrays,Php,Mysql,Arrays,我试图比较并将表B中的唯一记录添加到表A中,并跳过重复记录(如果存在)并对下一条记录执行搜索,如果未找到匹配项,则添加它。 使用[SalesDescription]字段进行比较 我尝试使用array_unique和array_different、array_intersect,但这些函数都无法消除重复项/无法对我起作用 下面是添加数据的代码 $records=array( 'SalesDescription' => $row['SalesDescriptio

我试图比较并将表B中的唯一记录添加到表A中,并跳过重复记录(如果存在)并对下一条记录执行搜索,如果未找到匹配项,则添加它。 使用[SalesDescription]字段进行比较

我尝试使用array_unique和array_different、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!

两个数组字段都不同,我相信您是在比较两个数组中的特定字段值,然后只需检查(a.field.salessdescription==b.salessdescription)?@Asik谢谢!!。它确实部分工作,但当我再次运行PHP脚本时,它会创建重复的recordMichiel,感谢您的回复,但我想比较/搜索表A和表B上的值[SalesDescription]字段。如果表A上有匹配项,则跳过它并进行下一次搜索/比较,但我认为在您的情况下,它只比较[SalesDescription]表B上的字段。问题是我想每10分钟运行一次PHP脚本,以将新记录从表B添加到A。啊,好的,但是您仍然只比较SalesDescription字段吗?还是有更多字段使一行唯一?再次感谢Michiel,是的,将有更多字段,但现在我想用SalesDescription字段测试它?