Php 从两个不同的多维数组中获取唯一值

Php 从两个不同的多维数组中获取唯一值,php,Php,这是我的两个多维数组,我想得到唯一的值,当相同的IPProduct\u id的值出现时,然后减去fTotal\u数量。我需要帮助。先谢谢你 这是Array1 Array( [0] => Array ( [iProduct_id] => 1 [fTotal_qty] => 200 ) [1] => Array ( [iProduct_id

这是我的两个多维数组,我想得到唯一的值,当相同的IPProduct\u id的值出现时,然后减去fTotal\u数量。我需要帮助。先谢谢你

这是Array1

Array(
    [0] => Array
        (
            [iProduct_id] => 1
            [fTotal_qty] => 200
        )

    [1] => Array
        (
            [iProduct_id] => 4
            [fTotal_qty] => 100
        )

)
这是Array2

Array
(
    [0] => Array
        (
            [iProduct_id] => 1
            [fTotal_qty] => 500
        )

    [1] => Array
        (
            [iProduct_id] => 2
            [fTotal_qty] => 400
        )

    [2] => Array
        (
            [iProduct_id] => 6
            [fTotal_qty] => 700
        )

    [3] => Array
        (
            [iProduct_id] => 4
            [fTotal_qty] => 300
        )

    [4] => Array
        (
            [iProduct_id] => 5
            [fTotal_qty] => 200
        )

)
我想要这样的输出

iProduct_id = 1, fTotal_qty = 300
iProduct_id = 2, fTotal_qty = 400
iProduct_id = 6, fTotal_qty = 700
iProduct_id = 4, fTotal_qty = 200

您需要在php中使用数组映射函数

array_map(myfunction,array1,array2,array3...) 
在这里,myfunction是一种包含逻辑的方法,用于对项目进行减法和合并


array1、array2、array3是可能包含数据的数组数。

您需要在php中使用数组映射函数

array_map(myfunction,array1,array2,array3...) 
在这里,myfunction是一种包含逻辑的方法,用于对项目进行减法和合并


array1、array2、array3是可能包含数据的数组数。

您可以执行以下操作:

foreach($array1 as $index => $value) {
  $key = array_search($value['iProduct_id'], $array2);
  if($key) {
    $newArray[$index]['iProduct_id'] = $value['iProduct_id'];
    $newArray[$index]['fTotal_qty'] = $array2[$key]['fTotal_qty'] - $value['fTotal_qty'];
  }
}
$finalArray = array_diff($array2,$newArray);
var_dump(array_merge($finalArray,$newArray));

我希望这会有所帮助。

您可以执行以下操作:

foreach($array1 as $index => $value) {
  $key = array_search($value['iProduct_id'], $array2);
  if($key) {
    $newArray[$index]['iProduct_id'] = $value['iProduct_id'];
    $newArray[$index]['fTotal_qty'] = $array2[$key]['fTotal_qty'] - $value['fTotal_qty'];
  }
}
$finalArray = array_diff($array2,$newArray);
var_dump(array_merge($finalArray,$newArray));
<?php

$one =
[
    [
        'id'=>1,
        'amount' => 100
    ],
    [
        'id'=>2,
        'amount' => 200
    ],
];
$two =
[
    [
        'id'=>1,
        'amount' => 700
    ],
    [
        'id'=>2,
        'amount' => 800
    ],
    [
        'id'=>3,
        'amount' => 900
    ],
];

$one_id_amount  = array_column($one, 'amount', 'id');
foreach($result = $two as $k => $v)
    $result[$k]['amount'] -= $one_id_amount[$v['id']] ?? 0;

var_export($result);
我希望这会有帮助。

测试答案:

<?php

$one =
[
    [
        'id'=>1,
        'amount' => 100
    ],
    [
        'id'=>2,
        'amount' => 200
    ],
];
$two =
[
    [
        'id'=>1,
        'amount' => 700
    ],
    [
        'id'=>2,
        'amount' => 800
    ],
    [
        'id'=>3,
        'amount' => 900
    ],
];

$one_id_amount  = array_column($one, 'amount', 'id');
foreach($result = $two as $k => $v)
    $result[$k]['amount'] -= $one_id_amount[$v['id']] ?? 0;

var_export($result);
我希望这会有帮助。

测试答案:

<?php

$one =
[
    [
        'id'=>1,
        'amount' => 100
    ],
    [
        'id'=>2,
        'amount' => 200
    ],
];
$two =
[
    [
        'id'=>1,
        'amount' => 700
    ],
    [
        'id'=>2,
        'amount' => 800
    ],
    [
        'id'=>3,
        'amount' => 900
    ],
];

$one_id_amount  = array_column($one, 'amount', 'id');
foreach($result = $two as $k => $v)
    $result[$k]['amount'] -= $one_id_amount[$v['id']] ?? 0;

var_export($result);

我希望这会有所帮助。

数组1中的项目是否总是在数组2中出现?是的,某些项目总是在数组中出现array2@UrvishPatel什么东西?因此,有可能阵列1中的某些项目在阵列2中不存在,反之亦然?I Product_id和fltotal_数量之间的关系如何。阵列1中的项目是否始终存在于阵列2中?是的,某些项目始终存在于阵列中array2@UrvishPatel什么东西?因此,有可能数组1中的某些项目在数组2中不存在,反之亦然?I Product_id和fltotal_qty之间的关系是什么?检查此函数检查此函数
<?php

$one =
[
    [
        'id'=>1,
        'amount' => 100
    ],
    [
        'id'=>2,
        'amount' => 200
    ],
];
$two =
[
    [
        'id'=>1,
        'amount' => 700
    ],
    [
        'id'=>2,
        'amount' => 800
    ],
    [
        'id'=>3,
        'amount' => 900
    ],
];

$one_id_amount  = array_column($one, 'amount', 'id');
foreach($result = $two as $k => $v)
    $result[$k]['amount'] -= $one_id_amount[$v['id']] ?? 0;

var_export($result);