2014-12-28 71 views
2

我想合并一个array像第一个元素到一个object像第二个元素。 是否可以合并一个php对象和一个php数组?如果是这样,我如何合并这些?合并一个php数组和一个php对象

我已经通过print_r

第一个元素(数组)剪断

Array 
(
    [start_date] => 2014-12-28 
) 

第二元件(对象)

Bannerlookup Object 
(
    [_new:CActiveRecord:private] => 
    [_attributes:CActiveRecord:private] => Array 
     (
      [id] => 1 
      [name] => First Banner 
      [description] => My first banner description goes here 
      [type] => 1 
      [position] => 1 
      [price] => 20 
      [status] => 1 
     ) 

    [_related:CActiveRecord:private] => Array 
     (
     ) 

    [_c:CActiveRecord:private] => 
    [_pk:CActiveRecord:private] => 1 
    [_alias:CActiveRecord:private] => t 
    [_errors:CModel:private] => Array 
     (
     ) 

    [_validators:CModel:private] => 
    [_scenario:CModel:private] => update 
    [_e:CComponent:private] => 
    [_m:CComponent:private] => 
) 

感谢提前:)

回答

1

首先将对象转换数组。

$new_array = json_decode(json_encode($your_object), true); 

现在将它与现有数组合并。

$merged_array = array_merge($old_array, $new_array) ; 

合并将导致第二个数组覆盖相同的key。见Array Merge Manual

+1

感谢好友的快速回复。它真的帮了我。 :)作为YII的模型对象标准,我做了这样$ obj_to_array = json_decode(json_encode($ model-> attributes),true);这可能有助于其他.... :)。我知道在数组合并时键重写。欢呼声.... –

+0

欢迎。如果解决了,请接受。 – Riad

1

哇,你可以用更readeblilty做到这一点,很容易像

$combination = CMap::mergeArray($my_array, $my_model->attributes); 

每种模式都有一个功能getAttributes(),这将给你的模型属性数组,然后你就可以使用,没有NEEDJSONENCODEDECODE ing:D

+0

这听起来很有趣。我赞赏YII用户的这种方法。这是我正在寻找的那个。我不知道YII的CMap。我会试试这个,当我再次需要这个。无论如何,谢谢你的伟大答案...... :) –