那里有很多阵列功能,我尝试了几个甚至尝试做几次循环...我无法做到。 下面给出的数组是我的结果数组,相同的用户被多次插入,因为它们的值不同。改变所有机制将是一个好主意,但我在项目的最后阶段。如果有人可以这样做,请回复:
Array
(
[0] => stdClass Object
(
[user_id] => 321
[name] => Paige Lycettok
[id] => 4
[openhouse_id] => 58e826747919f36c7cd0074d92af04c5
[property_id] => 5
[interested] => 1
[openhouse] => Array
(
[0] => stdClass Object
(
[openhouse_id] => 6e291b19bdca9a4d074976f0e8b9bcff
[openhouse_date] => 2016-04-07
[start_time] => 08:00
[end_time] => 17:00
)
[1] => stdClass Object
(
[openhouse_id] => ca1927cee99722ac7fbd1a0588fdc4de
[openhouse_date] => 2016-04-14
[start_time] => 07:00
[end_time] => 14:00
)
[2] => stdClass Object
(
[openhouse_id] => 58e826747919f36c7cd0074d92af04c5
[openhouse_date] => 2016-04-21
[start_time] => 12:00
[end_time] => 18:00
[interested] => 1
[attendence] => 0
)
[3] => stdClass Object
(
[openhouse_id] => 852e29abf3524a0b8ceea3ada823e44e
[openhouse_date] => 2016-04-21
[start_time] => 18:15
[end_time] => 21:15
)
[4] => stdClass Object
(
[openhouse_id] => 1112019fed147e1de6f1308852009653
[openhouse_date] => 2016-04-25
[start_time] => 09:15
[end_time] => 11:15
)
[5] => stdClass Object
(
[openhouse_id] => 03ab091ad03df06dfb6dcf2cb7ad211a
[openhouse_date] => 2016-04-28
[start_time] => 03:15
[end_time] => 09:15
)
)
)
[1] => stdClass Object
(
[user_id] => 320
[name] => Mason Barker
[id] => 5
[openhouse_id] => 58e826747919f36c7cd0074d92af04c5
[property_id] => 5
[interested] => 1
[openhouse] => Array
(
[0] => stdClass Object
(
[openhouse_id] => 6e291b19bdca9a4d074976f0e8b9bcff
[openhouse_date] => 2016-04-07
[start_time] => 08:00
[end_time] => 17:00
)
[1] => stdClass Object
(
[openhouse_id] => ca1927cee99722ac7fbd1a0588fdc4de
[openhouse_date] => 2016-04-14
[start_time] => 07:00
[end_time] => 14:00
)
[2] => stdClass Object
(
[openhouse_id] => 58e826747919f36c7cd0074d92af04c5
[openhouse_date] => 2016-04-21
[start_time] => 12:00
[end_time] => 18:00
[interested] => 1
[attendence] => 0
)
[3] => stdClass Object
(
[openhouse_id] => 852e29abf3524a0b8ceea3ada823e44e
[openhouse_date] => 2016-04-21
[start_time] => 18:15
[end_time] => 21:15
)
[4] => stdClass Object
(
[openhouse_id] => 1112019fed147e1de6f1308852009653
[openhouse_date] => 2016-04-25
[start_time] => 09:15
[end_time] => 11:15
)
[5] => stdClass Object
(
[openhouse_id] => 03ab091ad03df06dfb6dcf2cb7ad211a
[openhouse_date] => 2016-04-28
[start_time] => 03:15
[end_time] => 09:15
)
)
)
[2] => stdClass Object
(
[user_id] => 323
[name] => Jasmine Baudin
[id] => 6
[openhouse_id] => 03ab091ad03df06dfb6dcf2cb7ad211a
[property_id] => 5
[interested] => 1
[openhouse] => Array
(
[0] => stdClass Object
(
[openhouse_id] => 6e291b19bdca9a4d074976f0e8b9bcff
[openhouse_date] => 2016-04-07
[start_time] => 08:00
[end_time] => 17:00
)
[1] => stdClass Object
(
[openhouse_id] => ca1927cee99722ac7fbd1a0588fdc4de
[openhouse_date] => 2016-04-14
[start_time] => 07:00
[end_time] => 14:00
)
[2] => stdClass Object
(
[openhouse_id] => 58e826747919f36c7cd0074d92af04c5
[openhouse_date] => 2016-04-21
[start_time] => 12:00
[end_time] => 18:00
)
[3] => stdClass Object
(
[openhouse_id] => 852e29abf3524a0b8ceea3ada823e44e
[openhouse_date] => 2016-04-21
[start_time] => 18:15
[end_time] => 21:15
)
[4] => stdClass Object
(
[openhouse_id] => 1112019fed147e1de6f1308852009653
[openhouse_date] => 2016-04-25
[start_time] => 09:15
[end_time] => 11:15
)
[5] => stdClass Object
(
[openhouse_id] => 03ab091ad03df06dfb6dcf2cb7ad211a
[openhouse_date] => 2016-04-28
[start_time] => 03:15
[end_time] => 09:15
[interested] => 1
[attendence] => 0
)
)
)
[3] => stdClass Object
(
[user_id] => 323
[name] => Jasmine Baudin
[id] => 7
[openhouse_id] => 852e29abf3524a0b8ceea3ada823e44e
[property_id] => 5
[interested] => 1
[openhouse] => Array
(
[0] => stdClass Object
(
[openhouse_id] => 6e291b19bdca9a4d074976f0e8b9bcff
[openhouse_date] => 2016-04-07
[start_time] => 08:00
[end_time] => 17:00
)
[1] => stdClass Object
(
[openhouse_id] => ca1927cee99722ac7fbd1a0588fdc4de
[openhouse_date] => 2016-04-14
[start_time] => 07:00
[end_time] => 14:00
)
[2] => stdClass Object
(
[openhouse_id] => 58e826747919f36c7cd0074d92af04c5
[openhouse_date] => 2016-04-21
[start_time] => 12:00
[end_time] => 18:00
)
[3] => stdClass Object
(
[openhouse_id] => 852e29abf3524a0b8ceea3ada823e44e
[openhouse_date] => 2016-04-21
[start_time] => 18:15
[end_time] => 21:15
[interested] => 1
[attendence] => 0
)
[4] => stdClass Object
(
[openhouse_id] => 1112019fed147e1de6f1308852009653
[openhouse_date] => 2016-04-25
[start_time] => 09:15
[end_time] => 11:15
)
[5] => stdClass Object
(
[openhouse_id] => 03ab091ad03df06dfb6dcf2cb7ad211a
[openhouse_date] => 2016-04-28
[start_time] => 03:15
[end_time] => 09:15
)
)
)
)
在上面的数组中,我有相同的user_id:323。我想要的是如果user_id相同我想将他们的openhouse数组合并为一个如下所示:
Array
(
[0] => stdClass Object
(
[user_id] => 321
[name] => Paige Lycettok
[id] => 4
[openhouse_id] => 58e826747919f36c7cd0074d92af04c5
[property_id] => 5
[interested] => 1
[openhouse] => Array
(
[0] => stdClass Object
(
[openhouse_id] => 6e291b19bdca9a4d074976f0e8b9bcff
[openhouse_date] => 2016-04-07
[start_time] => 08:00
[end_time] => 17:00
)
[1] => stdClass Object
(
[openhouse_id] => ca1927cee99722ac7fbd1a0588fdc4de
[openhouse_date] => 2016-04-14
[start_time] => 07:00
[end_time] => 14:00
)
[2] => stdClass Object
(
[openhouse_id] => 58e826747919f36c7cd0074d92af04c5
[openhouse_date] => 2016-04-21
[start_time] => 12:00
[end_time] => 18:00
[interested] => 1
[attendence] => 0
)
[3] => stdClass Object
(
[openhouse_id] => 852e29abf3524a0b8ceea3ada823e44e
[openhouse_date] => 2016-04-21
[start_time] => 18:15
[end_time] => 21:15
)
[4] => stdClass Object
(
[openhouse_id] => 1112019fed147e1de6f1308852009653
[openhouse_date] => 2016-04-25
[start_time] => 09:15
[end_time] => 11:15
)
[5] => stdClass Object
(
[openhouse_id] => 03ab091ad03df06dfb6dcf2cb7ad211a
[openhouse_date] => 2016-04-28
[start_time] => 03:15
[end_time] => 09:15
)
)
)
[1] => stdClass Object
(
[user_id] => 320
[name] => Mason Barker
[id] => 5
[openhouse_id] => 58e826747919f36c7cd0074d92af04c5
[property_id] => 5
[interested] => 1
[openhouse] => Array
(
[0] => stdClass Object
(
[openhouse_id] => 6e291b19bdca9a4d074976f0e8b9bcff
[openhouse_date] => 2016-04-07
[start_time] => 08:00
[end_time] => 17:00
)
[1] => stdClass Object
(
[openhouse_id] => ca1927cee99722ac7fbd1a0588fdc4de
[openhouse_date] => 2016-04-14
[start_time] => 07:00
[end_time] => 14:00
)
[2] => stdClass Object
(
[openhouse_id] => 58e826747919f36c7cd0074d92af04c5
[openhouse_date] => 2016-04-21
[start_time] => 12:00
[end_time] => 18:00
[interested] => 1
[attendence] => 0
)
[3] => stdClass Object
(
[openhouse_id] => 852e29abf3524a0b8ceea3ada823e44e
[openhouse_date] => 2016-04-21
[start_time] => 18:15
[end_time] => 21:15
)
[4] => stdClass Object
(
[openhouse_id] => 1112019fed147e1de6f1308852009653
[openhouse_date] => 2016-04-25
[start_time] => 09:15
[end_time] => 11:15
)
[5] => stdClass Object
(
[openhouse_id] => 03ab091ad03df06dfb6dcf2cb7ad211a
[openhouse_date] => 2016-04-28
[start_time] => 03:15
[end_time] => 09:15
)
)
)
[2] => stdClass Object
(
[user_id] => 323
[name] => Jasmine Baudin
[id] => 6
[openhouse_id] => 03ab091ad03df06dfb6dcf2cb7ad211a
[property_id] => 5
[interested] => 1
[openhouse] => Array
(
[0] => stdClass Object
(
[openhouse_id] => 6e291b19bdca9a4d074976f0e8b9bcff
[openhouse_date] => 2016-04-07
[start_time] => 08:00
[end_time] => 17:00
)
[1] => stdClass Object
(
[openhouse_id] => ca1927cee99722ac7fbd1a0588fdc4de
[openhouse_date] => 2016-04-14
[start_time] => 07:00
[end_time] => 14:00
)
[2] => stdClass Object
(
[openhouse_id] => 58e826747919f36c7cd0074d92af04c5
[openhouse_date] => 2016-04-21
[start_time] => 12:00
[end_time] => 18:00
)
[3] => stdClass Object
(
[openhouse_id] => 852e29abf3524a0b8ceea3ada823e44e
[openhouse_date] => 2016-04-21
[start_time] => 18:15
[end_time] => 21:15
)
[4] => stdClass Object
(
[openhouse_id] => 1112019fed147e1de6f1308852009653
[openhouse_date] => 2016-04-25
[start_time] => 09:15
[end_time] => 11:15
)
[5] => stdClass Object
(
[openhouse_id] => 03ab091ad03df06dfb6dcf2cb7ad211a
[openhouse_date] => 2016-04-28
[start_time] => 03:15
[end_time] => 09:15
[interested] => 1
[attendence] => 0
)
[6] => stdClass Object
(
[openhouse_id] => 6e291b19bdca9a4d074976f0e8b9bcff
[openhouse_date] => 2016-04-07
[start_time] => 08:00
[end_time] => 17:00
)
[7] => stdClass Object
(
[openhouse_id] => ca1927cee99722ac7fbd1a0588fdc4de
[openhouse_date] => 2016-04-14
[start_time] => 07:00
[end_time] => 14:00
)
[8] => stdClass Object
(
[openhouse_id] => 58e826747919f36c7cd0074d92af04c5
[openhouse_date] => 2016-04-21
[start_time] => 12:00
[end_time] => 18:00
)
[9] => stdClass Object
(
[openhouse_id] => 852e29abf3524a0b8ceea3ada823e44e
[openhouse_date] => 2016-04-21
[start_time] => 18:15
[end_time] => 21:15
[interested] => 1
[attendence] => 0
)
[10] => stdClass Object
(
[openhouse_id] => 1112019fed147e1de6f1308852009653
[openhouse_date] => 2016-04-25
[start_time] => 09:15
[end_time] => 11:15
)
[11] => stdClass Object
(
[openhouse_id] => 03ab091ad03df06dfb6dcf2cb7ad211a
[openhouse_date] => 2016-04-28
[start_time] => 03:15
[end_time] => 09:15
)
)
)
)
可以有多个用户具有相同的user_id。
答案 0 :(得分:1)
未经测试,但您应该可以相对轻松地完成此操作。
如果您使用我认为唯一的user_id
作为您的数组键,您将能够在需要时轻松访问用户的数据。
您还可以与现有密钥合并,或者只是在不存在时创建新的。
例如:
$output = array();
foreach ($input as $values) {
$userId = $values->user_id;
if (array_key_exists($userId, $output)) {
// We've already added this user, so merge in openhouse
$output[$userId]->openhouse = array_merge($output[$userId]->openhouse, $values->openhouse);
} else {
// We haven't added it yet, so just add everything
$output[$userId] = $values;
}
}
现在:查看您的示例数据,看起来您的openhouse
数组包含相同的数据集,每个数组中都存在几个键,这些键区别于它们。如果是这种情况,您可能希望使用array_merge_recursive()
。如果您发布一个更有用的示例数据示例,我可以使用它,但这应该可以让您开始。