Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果另一个对象数组元素id具有相同的id,如何将新元素添加(更新)到对象数组中?_Php_Arrays_Array Merge - Fatal编程技术网

Php 如果另一个对象数组元素id具有相同的id,如何将新元素添加(更新)到对象数组中?

Php 如果另一个对象数组元素id具有相同的id,如何将新元素添加(更新)到对象数组中?,php,arrays,array-merge,Php,Arrays,Array Merge,我在PHP中有以下数组: Array1 ( [0] => stdClass Object ( [expense_id] => 475 [expense_name] => DRAY [expense_unit_cost] => 270.00 ) [1] => stdClass Object ( [expense_id] => 476 [expense_na

我在PHP中有以下数组:

Array1
(
[0] => stdClass Object
    (
        [expense_id] => 475
        [expense_name] => DRAY 
        [expense_unit_cost] => 270.00
    )

[1] => stdClass Object
    (
        [expense_id] => 476
        [expense_name] => FUEL 
        [expense_unit_cost] => 32.40
    )

)

我需要使用expense\u id将两个数组组合起来,结果如下所示:

Array3
(
[0] => stdClass Object
    (
        [expense_id] => 475
        [expense_name] => DRAY 
        [expense_unit_cost] => 270.00
        [expense_taxes] => Array
            (
                [0] => stdClass Object
                    (
                        [waybill_id] => 20005044
                        [expense_id] => 475
                        [tax_select] => tax1
                        [tax_id] => 1
                        [tax_name] => GST 5%
                        [tax_no] => 
                        [tax_value] => 13.5000
                    )

                [1] => stdClass Object
                    (
                        [waybill_id] => 20005044
                        [expense_id] => 475
                        [tax_select] => tax2
                        [tax_id] => 2
                        [tax_name] => QST 9.975%
                        [tax_no] => 
                        [tax_value] => 26.9325
                    )
            )       

    )

[1] => stdClass Object
    (
        [expense_id] => 476
        [expense_name] => FUEL 
        [expense_unit_cost] => 32.40
        [expense_taxes] => Array
            (
                [0] => stdClass Object
                    (
                        [waybill_id] => 20005044
                        [expense_id] => 476
                        [tax_select] => tax1
                        [tax_id] => 1
                        [tax_name] => GST 5%
                        [tax_no] => 
                        [tax_value] => 1.6200
                    )

                [1] => stdClass Object
                    (
                        [waybill_id] => 20005044
                        [expense_id] => 476
                        [tax_select] => tax2
                        [tax_id] => 2
                        [tax_name] => QST 9.975%
                        [tax_no] => 
                        [tax_value] => 3.2319
                    )
            )           

    )

)
如您所见,我在两个阵列上都有费用id,该必须是最终阵列的关键

我曾尝试循环一个数组并检查费用id密钥匹配,但无法实现最终数组。 另外,我还看了数组合并数组映射数组相交

谢谢你的建议。

试试

foreach($key=>$element的对象){
如果($element->expense\u id==475){
$element->expense\u taxes[0]=$stdClass;
}

}

这一切有点复杂,因为实际的对象数组是从ajax到PHP的,但是,我根据KennyDope的建议找到了答案

如果Array1是$expenses\u obj,Array2是$invoice\u taxes\u obj

        foreach ($expenses_obj as $key => $expense):
            foreach ($invoice_taxes_obj as $key => $tax):
                if ($expense->expense_id == $invoice_taxes_obj[$key]->expense_id){
                    $expense->taxes[] = (array)$invoice_taxes_obj[$key]; 
                }   
            endforeach;
        endforeach;
最终结果就是我需要的:

Array
(
[0] => stdClass Object
    (
        [expense_id] => 475
        [expense_name] => DRAY 
        [expense_unit_cost] => 270.00
        [taxes] => Array
            (
                [0] => Array
                    (
                        [waybill_id] => 20005044
                        [expense_id] => 475
                        [tax_select] => tax1
                        [tax_id] => 1
                        [tax_name] => GST 5%
                        [tax_no] => 
                        [tax_value] => 13.5000
                    )

                [1] => Array
                    (
                        [waybill_id] => 20005044
                        [expense_id] => 475
                        [tax_select] => tax2
                        [tax_id] => 2
                        [tax_name] => QST 9.975%
                        [tax_no] => 
                        [tax_value] => 26.9325
                    )

            )

    )

[1] => stdClass Object
    (
        [expense_id] => 476
        [expense_name] => FUEL 
        [expense_unit_cost] => 32.40
        [taxes] => Array
            (
                [0] => Array
                    (
                        [waybill_id] => 20005044
                        [expense_id] => 476
                        [tax_select] => tax1
                        [tax_id] => 1
                        [tax_name] => GST 5%
                        [tax_no] => 
                        [tax_value] => 1.6200
                    )

                [1] => Array
                    (
                        [waybill_id] => 20005044
                        [expense_id] => 476
                        [tax_select] => tax2
                        [tax_id] => 2
                        [tax_name] => QST 9.975%
                        [tax_no] => 
                        [tax_value] => 3.2319
                    )

            )

    )

)

欢迎您的评论。谢谢你的输入。

我认为循环可以解决这个问题,你能在这里发布你的代码吗,可能有错误。在这里发布代码要复杂得多。谢谢,谢谢。我以前尝试过,但由于对象数组的原因没有成功。
Array
(
[0] => stdClass Object
    (
        [expense_id] => 475
        [expense_name] => DRAY 
        [expense_unit_cost] => 270.00
        [taxes] => Array
            (
                [0] => Array
                    (
                        [waybill_id] => 20005044
                        [expense_id] => 475
                        [tax_select] => tax1
                        [tax_id] => 1
                        [tax_name] => GST 5%
                        [tax_no] => 
                        [tax_value] => 13.5000
                    )

                [1] => Array
                    (
                        [waybill_id] => 20005044
                        [expense_id] => 475
                        [tax_select] => tax2
                        [tax_id] => 2
                        [tax_name] => QST 9.975%
                        [tax_no] => 
                        [tax_value] => 26.9325
                    )

            )

    )

[1] => stdClass Object
    (
        [expense_id] => 476
        [expense_name] => FUEL 
        [expense_unit_cost] => 32.40
        [taxes] => Array
            (
                [0] => Array
                    (
                        [waybill_id] => 20005044
                        [expense_id] => 476
                        [tax_select] => tax1
                        [tax_id] => 1
                        [tax_name] => GST 5%
                        [tax_no] => 
                        [tax_value] => 1.6200
                    )

                [1] => Array
                    (
                        [waybill_id] => 20005044
                        [expense_id] => 476
                        [tax_select] => tax2
                        [tax_id] => 2
                        [tax_name] => QST 9.975%
                        [tax_no] => 
                        [tax_value] => 3.2319
                    )

            )

    )

)