比较数组,并显示PHP之间的差异

比较数组,并显示PHP之间的差异,php,arrays,Php,Arrays,我花了很长时间研究如何在数组之间执行此操作,但我无法在返回这些结果时获得PHP中的算法 数组#1: 数组#2: 我希望以数组格式显示此结果: Array FINAL_RESULT ( [1] => Array ( [item_code] => FO1321 [item_quantity] => -4 [item_sellprice] => 22.40 [

我花了很长时间研究如何在数组之间执行此操作,但我无法在返回这些结果时获得PHP中的算法

数组#1:

数组#2:

我希望以数组格式显示此结果:

Array FINAL_RESULT
(
    [1] => Array
        (
            [item_code] => FO1321
            [item_quantity] => -4
            [item_sellprice] => 22.40
            [taken] => 0
        )

    [2] => Array
        (
            [item_code] => HE240
            [item_quantity] => -1
            [item_sellprice] => 22.40
            [taken] => 0
        )

    [3] => Array
        (
            [item_code] => EL55
            [item_quantity] => +1
            [item_sellprice] => 8.00
            [taken] => 0
        )

)
我这样做是为了比较正在修改的现有法案。
我需要设置它们之间的差异,然后在DB中进行更改。

用于计算结果数组值的数学对我来说没有意义(我怀疑您可能在帖子中输入了错误的数据)

如果我是你,我会使用
item\u code
作为数组键创建关联数组,这样当你进行比较时,你可以当场更新值

Array DB_ITEMS
(
    [FO1321] => Array
        (
            [item_code] => FO1321
            [item_quantity] => 5
            [item_sellprice] => 18.00
            [found] => 0
        )

    [HE240] => Array
        (
            [item_code] => HE240
            [item_quantity] => 1
            [item_sellprice] => 22.40
            [found] => 0
        )

)

Array BUY_ITEMS
(
    [FO1321] => Array
        (
            [item_code] => FO1321
            [item_quantity] => 1
            [item_sellprice] => 18.00
            [taken] => 0
        )

    [EL55] => Array
        (
            [item_code] => EL55
            [item_quantity] => 1
            [item_sellprice] => 8.00
            [taken] => 0
        )

)
现在,您可以单步执行buy items数组并更新db items数组(未测试):


用于计算结果数组值的数学对我来说没有意义(我怀疑您可能在帖子中输入了错误的数据)

如果我是你,我会使用
item\u code
作为数组键创建关联数组,这样当你进行比较时,你可以当场更新值

Array DB_ITEMS
(
    [FO1321] => Array
        (
            [item_code] => FO1321
            [item_quantity] => 5
            [item_sellprice] => 18.00
            [found] => 0
        )

    [HE240] => Array
        (
            [item_code] => HE240
            [item_quantity] => 1
            [item_sellprice] => 22.40
            [found] => 0
        )

)

Array BUY_ITEMS
(
    [FO1321] => Array
        (
            [item_code] => FO1321
            [item_quantity] => 1
            [item_sellprice] => 18.00
            [taken] => 0
        )

    [EL55] => Array
        (
            [item_code] => EL55
            [item_quantity] => 1
            [item_sellprice] => 8.00
            [taken] => 0
        )

)
现在,您可以单步执行buy items数组并更新db items数组(未测试):


看看它似乎正是您想要的

看看它似乎正是您想要的

因为您没有提供太多逻辑(仅针对数量)

结果:

array(3) {
  ["FO1321"]=>
  array(4) {
    ["item_code"]=>
    string(6) "FO1321"
    ["item_quantity"]=>
    int(-4)
    ["item_sellprice"]=>
    int(18)
    ["taken"]=>
    int(0)
  }
  ["EL55"]=>
  array(4) {
    ["item_code"]=>
    string(4) "EL55"
    ["item_quantity"]=>
    int(1)
    ["item_sellprice"]=>
    int(8)
    ["taken"]=>
    int(0)
  }
  ["HE240"]=>
  array(4) {
    ["item_code"]=>
    string(5) "HE240"
    ["item_quantity"]=>
    int(-1)
    ["item_sellprice"]=>
    float(22.4)
    ["taken"]=>
    int(0)
  }
}

由于您没有提供太多的逻辑(仅针对数量)

结果:

array(3) {
  ["FO1321"]=>
  array(4) {
    ["item_code"]=>
    string(6) "FO1321"
    ["item_quantity"]=>
    int(-4)
    ["item_sellprice"]=>
    int(18)
    ["taken"]=>
    int(0)
  }
  ["EL55"]=>
  array(4) {
    ["item_code"]=>
    string(4) "EL55"
    ["item_quantity"]=>
    int(1)
    ["item_sellprice"]=>
    int(8)
    ["taken"]=>
    int(0)
  }
  ["HE240"]=>
  array(4) {
    ["item_code"]=>
    string(5) "HE240"
    ["item_quantity"]=>
    int(-1)
    ["item_sellprice"]=>
    float(22.4)
    ["taken"]=>
    int(0)
  }
}

有没有这样做的想法?我脑子都碎了,在想怎么做(解释FO1321:[item_sellprice]=>22.40的逻辑。如果不是打字错误,当然。有什么想法吗?),我在想该怎么做!:(解释FO1321:[item_sellprice]=>22.40的逻辑。如果不是打字错误,当然。
  $DB_ITEMS = array(
    array(
        'item_code' => 'FO1321',
        'item_quantity' => 5,
        'item_sellprice' => 18,
        'found' => 0
    ),
    array(
        'item_code' => 'HE240',
        'item_quantity' => 1,
        'item_sellprice' => 22.4,
        'found' => 0
    )
   );

  $BUY_ITEMS = array(
    array(
        'item_code' => 'FO1321',
        'item_quantity' => 1,
        'item_sellprice' => 18,
        'taken' => 0
    ),
    array(
        'item_code' => 'EL55',
        'item_quantity' => 1,
        'item_sellprice' => 8,
        'taken' => 0
    )
   );

  // fast fix
  $db = array(); $buy = array();
  foreach($DB_ITEMS as $item)
    $db[$item['item_code']] = $item;
  foreach($BUY_ITEMS as $item)
    $buy[$item['item_code']] = $item;
  unset($DB_ITEMS, $BUY_ITEMS);  

  // now deal with arrays
  foreach($db as $code=>$item)
    if (array_key_exists($code, $buy))
         $buy[$code]['item_quantity'] -= $item['item_quantity'];
    else
    {
         $buy[$code] = $item;
         $buy[$code]['item_quantity'] =- $item['item_quantity'];
         $buy[$code]['taken'] = $buy[$code]['found'];
         unset($buy[$code]['found']);
    }

  // output result
  var_dump($buy);
array(3) {
  ["FO1321"]=>
  array(4) {
    ["item_code"]=>
    string(6) "FO1321"
    ["item_quantity"]=>
    int(-4)
    ["item_sellprice"]=>
    int(18)
    ["taken"]=>
    int(0)
  }
  ["EL55"]=>
  array(4) {
    ["item_code"]=>
    string(4) "EL55"
    ["item_quantity"]=>
    int(1)
    ["item_sellprice"]=>
    int(8)
    ["taken"]=>
    int(0)
  }
  ["HE240"]=>
  array(4) {
    ["item_code"]=>
    string(5) "HE240"
    ["item_quantity"]=>
    int(-1)
    ["item_sellprice"]=>
    float(22.4)
    ["taken"]=>
    int(0)
  }
}