Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.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 如何向现有数组添加一个数组值?_Php_Arrays - Fatal编程技术网

Php 如何向现有数组添加一个数组值?

Php 如何向现有数组添加一个数组值?,php,arrays,Php,Arrays,我试图用现有的数组值添加一个数组值,但我被如何添加它们所困扰 阵列-1 [main] => Array ( [0] => stdClass Object ( [clientID] => 2 [maintenance_due] => 2016-05-09 00:00:00 [compl

我试图用现有的数组值添加一个数组值,但我被如何添加它们所困扰

阵列-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\u push
函数并使用foreach,但不起作用

请建议我怎么做

[0]=>stdClass对象

索引
0
下的不是
数组
,而是
对象
。除非它实现
ArrayAccess
接口,否则不能像使用常规数组那样执行此操作


关于对象的更多信息:

假设
$big\u array
是您发布的第一个数组,而
$small\u 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);

Per的评论,下面是在不重写任何类或方法的情况下执行此操作的正确方法:

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

使用
array\u merge
函数和从数组到对象的转换(强制转换)的解决方案,反之亦然(仅适用于基本
stdClass
对象):


因为数组的元素是对象。实际上,您在这里使用的是stdClass对象,而不是数组。您是如何尝试
array\u push()
?@axiac$arrayName=array('dtm'=>$daytosMaintenance,'edm'=>$EstDateforMaintenance);array\u push($date,$arrayName)
$main[0]->dtm=0问题海报似乎难以理解数组与对象以及多级数组等基本概念。当我们甚至不知道他们试图如何使用
array\u push()
时,这个神秘的答案如何帮助他们呢?答案正好指出了这一点。我假设OP能够发现这可能意味着一个缺陷或知识缺口。添加到官方文档的链接(而不是一些随机的问题或答案)值得收回我的反对票。值得用粗体字提及,这种方法只有在
stdClass
对象的情况下才有意义——在任何其他情况下,您只需将对象从任何方法中阉割出来,并将其变成dumb
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