2016-04-27 7 views
0

Es gibt so viele Array-Funktionen da draußen, ich habe versucht, einige von ihnen sogar versucht, ein paar Schleifen. Ich kann es nicht tun. Das unten angegebene Array ist mein Ergebnis-Array, dieselben Benutzer werden mehrmals eingefügt, da ihre Werte unterschiedlich sind. Die Änderung aller Mechanismen wäre eine gute Idee, aber ich bin in der letzten Phase des Projekts. Wenn jemand dies tun könnte, antworten Sie bitte:Können wir diesen Array-Typ in PHP zusammenführen? Wenn, wie?

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 
        ) 

      ) 

    ) 

) 

In der obigen Anordnung, habe ich das gleiche user_id: 323. Was ich will, ist, wenn die user_id gleich will ich ihre Openhouse-Array in einer wie unten nur fusionieren :

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 
        ) 

      ) 

    ) 

) 

Es kann mehrere Benutzer mit derselben user_id geben.

+0

Können Sie das Ergebnis 'var_export()' Ihres Eingabe-Arrays portieren? Es wird viel einfacher für uns zu spielen. –

Antwort

1

Nicht getestet, aber Sie sollten dies relativ einfach tun können.

Wenn Sie den user_id verwenden, von dem ich annehme, dass er als Ihr Array-Schlüssel eindeutig ist, können Sie auf einfache Weise jederzeit auf die Daten eines Benutzers zugreifen.

Sie haben den zusätzlichen Vorteil, zusammenführen gegen vorhandene Schlüssel oder einfach neue erstellen, wenn sie nicht existieren.

Zum Beispiel:

$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; 
    } 
} 

Jetzt: in Ihren Beispieldaten sucht es sieht aus wie Ihr openhouse Array den gleichen Satz von Daten enthält, mit einem paar Tasten, die hier und da in jedem Array existieren differenzier Sie. Wenn dies der Fall ist, können Sie stattdessen array_merge_recursive() verwenden. Wenn Sie ein brauchbareres Beispiel Ihrer Beispieldaten veröffentlichen, könnte ich damit spielen, aber das sollte Ihnen den Anfang machen.

+1

Es klingt für mich, als ob Sie bei Open House ID oder etwas benötigen, mit dem Sie sich referenzieren können –

Verwandte Themen