0

我有一个具有多个属性的对象,可以创建一个多维数组。我试图弄清楚如何创建一个将两个单独的对象组合成一个的新数组。它会从这个开始:

array(
    object_1(
       'id' => '1',
       'name' => 'joe'
       etc....),
    object_2(
       'id' => '2',
       'name' => 'jessica',
       etc....)
    object_3(
       'id' => '3',
       'name' => 'tim',
       etc....)
    object_4(
       'id' => '4',
       'name' => 'tammy',
       etc....)
    );

并成为:

array(
    object_1(
        'id' => '1',
        'name' => 'joe',
        etc...
        'id2' = > '2',
        'name2' => 'jessica',
        etc...)
    object_2(
        'id' => '3',
        'name' => 'tim',
        etc...
        'id2' = > '4',
        'name2' => 'tammy',
        etc...)

因此,我需要组合来自交替元素的数据,并更改所有第二个对象中的键,使其与第一个不匹配。说得通?对不起,如果没有,如果您需要,我会尽力澄清!

谢谢你的帮助....

编辑:根据 print_r 的前两个 stdclass 对象:

[results] => Array
    (
        [0] => stdClass Object
            (
                [email] => sample@info.com
                [message] => Create another test
                [image] => 138.png
                [fid] => 53
            )

        [1] => stdClass Object
            (
                [email] => info@sample.com
                [message] => none
                [image] => 330.jpg
                [fid] => 52
            )

我希望它变成:

[results] => Array
    (
        [0] => stdClass Object
            (
                [email] => sample@info.com
                [message] => Create another test
                [image] => 138.png
                [fid] => 53
                [email2] => info@sample.com
                [message2] => none
                [image2] => 330.jpg
                [fid2] => 52
            )

这说明清楚了吗?

4

2 回答 2

1

假设它实际上是一个多维数组,而不是对象数组,应该这样做:

$new_array = array();
for ($i = 0; $i < count($array); $i +=2) {
  $new_array[] = $array[$i];
  foreach ($array[$i+1] as $key => $value) {
    $new_array[$i/2][$key.'2'] = $value;
  }
}

编辑:对于对象数组,它变为:

$new_array = array();
for ($i = 0; $i < count($array); $i +=2) {
  $new_array[] = $array[$i];
  foreach (get_object_vars($array[$i+1] as $key => $value) {
    $new_array[$i/2]->{$key.'2'} = $value;
  }
}

这仅适用于公共财产。

于 2013-05-24T00:36:29.933 回答
0

你可以做类似的事情

for($i=0;$i<count($array);$i+=2) {
   $id = $array[$i]['id'];
   $name = $array[$i]['name'];
   $id2 = $array[$i+1]['id'];
   $name2 = $array[$i+1]['name'];
}

或者

$newarray = array();
$j=0;
for($i=0;$i<count($array);$i+=2) {
    $newarray[$j]['id'] = $array[$i]['id'];
    $newarray[$j]['nae'] = $array[$i]['name'];
    $newarray[$j]['id2'] = $array[$i+1]['id'];
    $newarray[$j]['name2'] = $array[$i+1]['name'];
    $j++;
}
于 2014-05-20T20:22:47.940 回答