簡體   English   中英

比較2個數組PHP中的值

[英]Compare values from 2 array 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($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>";
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM