[英]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.