2016-04-27 29 views
0

有那么多的阵列功能,我试过几个,甚至尝试做几个循环..我不能这样做。 下面给出的数组是我的结果数组,相同的用户多次插入,因为它们的值不同。改变所有机制将是个好主意,但是iam在项目的最后阶段。如果任何人都可以做到这一点,请回复:我们可以在PHP中进行这种类型的数组合并吗?如果可以,怎么样?

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

你可以移植你输入数组的'var_export()'结果吗?我们玩起来会容易得多。 –

回答

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()代替。如果你发布了一个更有用的示例数据例子,我可以和它一起玩,但这应该让你开始。

+1

这听起来像你需要在开放的房屋ID或您可以交叉参考 –

相关问题