簡體   English   中英

如何向現有數組添加一個數組值?

[英]How to add one array value to existing array?

我正在嘗試使用現有數組值添加一個數組值,但我不知道如何添加它們

陣列 1

[main] => Array
        (
            [0] => stdClass Object
                (
                    [clientID] => 2
                    [maintenance_due] => 2016-05-09 00:00:00
                    [complete_maintenance] => 1
                    [description] => dfdff
                    [created_at] => 2016-05-01 00:00:00
                    [completed_on] => 2016-05-06 00:00:00
                    [name] => Bottel packing 
                    [type_id] => 1
                    [machinecode] => HITBTP001
                    [model_no] => ModelA
                    [created_date] => 2016-03-27 06:55:05
                    [updated_date] => 0000-00-00 00:00:00
                )

        )

陣列 2

[dt] => Array
    (
        [dtm] => 0
        [edm] => 1
    )

我想要這樣

[main] => Array
        (
            [0] => stdClass Object
                (
                    [clientID] => 2
                    [maintenance_due] => 2016-05-09 00:00:00
                    [complete_maintenance] => 1
                    [description] => dfdff
                    [created_at] => 2016-05-01 00:00:00
                    [completed_on] => 2016-05-06 00:00:00
                    [name] => Bottel packing 
                    [type_id] => 1
                    [machinecode] => HITBTP001
                    [model_no] => ModelA
                    [created_date] => 2016-03-27 06:55:05
                    [updated_date] => 0000-00-00 00:00:00
                    [dtm] => 0
                    [edm] => 1


                )

        )

我正在嘗試array_push函數,也使用 foreach 但不起作用。

請建議我該怎么做。

使用array_merge函數和從數組到對象的轉換(轉換)的解決方案,反之亦然(僅適用於基本的stdClass對象):

// $array1 is your first array with 'main' key
// $array2 is your second array with 'dt' key

$main_arr = (array) current($array1['main']);  // converting object into array
$merged = array_merge($main_arr, $array2['dt']);  // combining "properties"

$array1['main'] = [(object) $merged]; // saving object with additional properties back to the initial array

print_r($array1); // will give the expected output

[0] => stdClass 對象

您在索引0擁有的不是array ,而是object 除非它實現了ArrayAccess接口,否則您不能像使用常規數組那樣執行此操作。

更多關於對象: https : //secure.php.net/manual/en/language.types.object.php

假設$big_array是您發布的第一個數組,而$small_array是您發布的第二個數組,那么這應該可以工作:

$big_array['main'][0] = (object)array_merge((array)$big_array['main'][0], $small_array['dt']);

我不知道你的代碼是什么樣的,所以這個可能會自動為你工作:

$main[0] = (object)array_merge((array)$main[0], $dt);

根據Marcin Orlowski的評論,以下是在不覆蓋任何類或方法的情況下執行此操作的正確方法:

$main[0]->dtm = $dt['dtm'];
$main[0]->edm= $dt['edm'];

暫無
暫無

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

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