在php中使用多维数组和对象
我已经发布了一个问题并解决了,但现在我正在尝试使用对象数组,我不确定如何解决这个问题: 我有一个类似的数组:在php中使用多维数组和对象,php,mysql,arrays,object,multidimensional-array,Php,Mysql,Arrays,Object,Multidimensional Array,我已经发布了一个问题并解决了,但现在我正在尝试使用对象数组,我不确定如何解决这个问题: 我有一个类似的数组: array(10) { [0]=> object(VO)#6 (35) { ["eventID"]=> string(1) "1" ["eventTitle"]=> string(7) "EVENT 1" ["artistID"]=> string(1) "1" ["artistName"]=>
array(10) {
[0]=>
object(VO)#6 (35) {
["eventID"]=>
string(1) "1"
["eventTitle"]=>
string(7) "EVENT 1"
["artistID"]=>
string(1) "1"
["artistName"]=>
string(8) "ARTIST 1"
["artistDescription"]=>
string(20) "ARTIST 1 description"
// etc.
}
[1]=>
object(VO)#7 (35) {
["eventID"]=>
string(1) "1"
["eventTitle"]=>
string(7) "EVENT 1"
["artistID"]=>
string(1) "2"
["artistName"]=>
string(8) "ARTIST 2"
["artistDescription"]=>
string(20) "ARTIST 2 description"
// etc.
}
[2]=>
object(VO)#8 (35) {
["eventID"]=>
string(1) "1"
["eventTitle"]=>
string(7) "EVENT 1"
["artistID"]=>
string(1) "3"
["artistName"]=>
string(8) "ARTIST 3"
["artistDescription"]=>
string(20) "ARTIST 3 description"
// etc.
}
[3]=>
object(VO)#9 (35) {
["eventID"]=>
string(1) "2"
["eventTitle"]=>
string(7) "EVENT 2"
["artistID"]=>
string(1) "5"
["artistName"]=>
string(8) "ARTIST 5"
["artistDescription"]=>
string(20) "ARTIST 5 description"
// etc.
}
[4]=>
object(VO)#10 (35) {
["eventID"]=>
string(1) "2"
["eventTitle"]=>
string(7) "EVENT 2"
["artistID"]=>
string(1) "7"
["artistName"]=>
string(8) "ARTIST 7"
["artistDescription"]=>
string(20) "ARTIST 7 description"
// etc.
}
//etc.
}
我需要这样格式化它:
array(2) {
[1]=>
object(VO)#6 (9) {
["eventID"]=>
string(1) "1"
["eventTitle"]=>
string(7) "EVENT 1"
["artists"]=>
array(3) {
[1]=>
array(2) {
["artistName"]=>
string(8) "ARTIST 1"
["artistDescription"]=>
string(20) "ARTIST 1 description"
}
[2]=>
array(2) {
["artistName"]=>
string(8) "ARTIST 2"
["artistDescription"]=>
string(20) "ARTIST 2 description"
}
[2]=>
array(2) {
["artistName"]=>
string(8) "ARTIST 3"
["artistDescription"]=>
string(20) "ARTIST 3 description"
}
}
}
[2]=>
object(VO)#7 (9) {
["eventID"]=>
string(1) "2"
["eventTitle"]=>
string(7) "EVENT 2"
["artists"]=>
array(3) {
[1]=>
array(2) {
["artistName"]=>
string(8) "ARTIST 5"
["artistDescription"]=>
string(20) "ARTIST 5 description"
}
[2]=>
array(2) {
["artistName"]=>
string(8) "ARTIST 7"
["artistDescription"]=>
string(20) "ARTIST 7 description"
}
}
}
}
谢谢你的帮助 上一个问题答案的修改版本-这样行吗
<?php
$output = array();
foreach($resultset as $event)
{
$eventId = $event->eventID;
$artistId = $event->artistID;
if (!isset($output[$eventId]))
{
$output[$eventId] = new stdClass();
$output[$eventId]->eventTitle = $event->eventTitle;
$output[$eventId]->eventID = $event->eventID;
}
if (!isset($output[$eventId]->artists)) $output[$eventId]->artists = array();
$output[$eventId]->artists[$artistId] = array();
$output[$eventId]->artists[$artistId]['artistID'] = $artistId;
$output[$eventId]->artists[$artistId]['artistName'] = $event->artistName;
$output[$eventId]->artists[$artistId]['artistDescription'] = $event->artistDescription;
}
echo '<pre>' . print_r($output,true) . '</pre>';
首先,你是如何得到这些对象的?你不能按照你想要的方式预先创建对象吗
不管怎样,你都能做到
请描述您的问题。好吧,我需要在这里“分组”第一个数组中的一些数据。。。我不知道该怎么做:)我不能引用像$output[$eventId]这样的ID(见我前面的问题-第一句中的链接),因为我现在正在处理对象,而不是数组…我正在从MySQL关系数据库中提取一些数据。。。我想我不能直接用MySQL查询创建我需要的对象。。。?您的解决方案看起来很有趣,我肯定会尝试,但我选择另一个解决方案作为答案,因为它是第一个在这里。。。非常感谢你!这取决于您的查询,但这是可能的。即使使用相同的查询,您也可以直接以正确的方式填充对象。。。
$in = array(0 => $obj1, 1 => $obj2, ...);
$out = array();
foreach($in as $obj) {
if(isset($out[$obj->eventID]) {
$out[$obj->eventID]->artists[] = array('artistName' => $obj->artistName, 'artistDescription' => $obj->artistDescription);
} else {
$out[$obj->eventID] = $obj;
$obj->artists = array(
array('artistName' => $obj->artistName, 'artistDescription' => $obj->artistDescription)
);
unset($obj->artistName);
unset($obj->artistDescription);
}
}
// $out contains your object