Php 如何向现有数组添加一个数组值?
我试图用现有的数组值添加一个数组值,但我被如何添加它们所困扰 阵列-1Php 如何向现有数组添加一个数组值?,php,arrays,Php,Arrays,我试图用现有的数组值添加一个数组值,但我被如何添加它们所困扰 阵列-1 [main] => Array ( [0] => stdClass Object ( [clientID] => 2 [maintenance_due] => 2016-05-09 00:00:00 [compl
[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
对象的情况下才有意义——在任何其他情况下,您只需将对象从任何方法中阉割出来,并将其变成dumbstdClass
对象。
// $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