我有一个具有多个属性的对象,可以创建一个多维数组。我正在试图弄清楚如何创建一个将两个单独的对象合并为一个的新数组。它将来自:
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
)
这是否澄清了?
答案 0 :(得分: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;
}
}
这只适用于公共场所。
答案 1 :(得分: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++;
}