Php 比较2个数组中的值

Php 比较2个数组中的值,php,Php,我需要比较2个数组中的2个值 我想出来了,但问题是我需要根据唯一id对数量进行比较 阵列1来自csv: prod_id,qty 1,1 2,3 3,1 4,3 5,1 数组2来自数据库: id,prod_id,qty 1,1,5 2,2,3 3,4,1 4,4,1 5,5,1 现在我要比较这两个数组,得到数量之间的差异, 例如: id 1在数据库5中有数量,在csv 1中有数量,因此其结果为+4 id 3在数据库中没有值,在csv中有1,所以它的结果是-1 我试过: foreach($arr

我需要比较2个数组中的2个值

我想出来了,但问题是我需要根据唯一id对数量进行比较

阵列1来自csv:

prod_id,qty
1,1
2,3
3,1
4,3
5,1
数组2来自数据库:

id,prod_id,qty
1,1,5
2,2,3
3,4,1
4,4,1
5,5,1
现在我要比较这两个数组,得到数量之间的差异, 例如:

id 1在数据库5中有数量,在csv 1中有数量,因此其结果为+4 id 3在数据库中没有值,在csv中有1,所以它的结果是-1

我试过:

foreach($array1 as $csv) {
            $id[] = $csv['id'];
            $data[$csv['id']] = $csv['qty'];

        }

        foreach($array2 as $db) {

                $data[$db['id']] = $db['totalQty'];

        }
但它给了我来自数据库和csv的结果

有没有其他方法来比较数量,只得到差异


非常感谢您的帮助。

如果我没有弄错

<?php

$csv = array(
    0 => array('prod_id'=>1,'qty'=>1),
    1 => array('prod_id'=>2,'qty'=>3),
    2 => array('prod_id'=>3,'qty'=>1),
    3 => array('prod_id'=>4,'qty'=>3),
    4 => array('prod_id'=>5,'qty'=>1)
);

$data = array(
    0 => array('id'=>1,'prod_id'=>1,'qty'=>5),
    1 => array('id'=>2,'prod_id'=>2,'qty'=>3),
    2 => array('id'=>3,'prod_id'=>4,'qty'=>1),
    3 => array('id'=>4,'prod_id'=>4,'qty'=>1),
    4 => array('id'=>5,'prod_id'=>5,'qty'=>1),
    5 => array('id'=>6,'prod_id'=>6,'qty'=>7)
);

$result = array();


foreach ($data as $a=>$b) {
        $data_id = $b['id'];
        $data_prod_id = $b['prod_id'];
        $data_qty = $b['qty'];
        $in_csv = false;

    foreach ($csv as $k=>$v) {
        $csv_prod_id = $v['prod_id'];
        $csv_qty = $v['qty'];

        if ($data_prod_id == $csv_prod_id && $data_id == $csv_prod_id) {
            $result[$data_id] = $data_qty - $csv_qty;
        }

        if ($data_id != $data_prod_id) {
            $result[$data_id] = 0 - $csv_qty;
            break;
        }

        if ($data_prod_id == $csv_prod_id) {
            $in_csv = true;
        }

        if (!$in_csv) {
            $result[$data_id] = $data_qty;
        }

    }

}

foreach ($result as $k=>$v) {
    if ($v != 0) {
        echo "ID $k has changed : $v  <br>";
    }
}

id 3在数据库中没有值
id
3在数据库中有
value=1
是的,csv中的id是数据库中的产品id。你能再解释一下吗?我仍然对数据库中的3,4,1和4,4,1(您的第3个和第4个id)感到困惑…您的数据是如何用PHP表示的$array1=数组(数组(1,1),数组(2,3),数组(3,1),数组(4,3),数组(5,1))$array2=数组(数组(1,1,5)、数组(2,2,3)、数组(3,4,1)、数组(4,4,1)、数组(5,5,1));我已经对夜哨的回答发表了评论。ThanksHi@Nightwhistle,是的,它解决了,但我现在有一个小问题,例如,如果我在数据库id 6上有prod_id 6,并且prod_id不在CSV中,那么prod_id 6将不会显示,如果它不在CSV中,是否有办法也获取prod_id 6?与CSV在数据库中缺少产品id 3的想法相同。谢谢。