I have two Object arrays. "ID" from array 1 corresponds to the same as "media_id" in array 2 I need to add the "album_ids" of array 2 to array 1.

Object 1;

Array ( [0] => stdClass Object ( [ID] => 2482 [post_author] => 6 [post_date] => 2014-07-31 07:59:26) [1] => stdClass Object ( [ID] => 2483 [post_author] => 6 [post_date] => 2014-07-31 07:59:28)

Object 2=

Array ( [0] => stdClass Object ( [album_id] => 52 [media_id] => 2482 ) [1] => stdClass Object ( [album_id] => 92 [media_id] => 2483 )

I need the end result to be:

Array ( [0] => stdClass Object ( [ID] => 2482 [post_author] => 6 [post_date] => 2014-07-31 07:59:26 [album_id] => 52) [1] => stdClass Object ( [ID] => 2483 [post_author] => 6 [post_date] => 2014-07-31 07:59:28 [album_id] => 92)

Thank you for the help!!

有帮助吗?

解决方案

As per your question, lets suppose you have two arrays of objects - array1 and array2.

aarry1 = Array( [0] => stdClass Object ( [ID] => 2482 [post_author] => 6 [post_date] => 2014-07-31 07:59:26) [1] => stdClass Object ( [ID] => 2483 [post_author] => 6 [post_date] => 2014-07-31 07:59:28)

array2= Array ( [0] => stdClass Object ( [album_id] => 52 [media_id] => 2482 ) [1] => stdClass Object ( [album_id] => 92 [media_id] => 2483 )

Now try out this code.

$albumids = array();
foreach ( $array2 as $key => $val) {
 $albumids[$val->media_id] = $val->album_id;
}

if(!empty($albumids)) {
 foreach ( $array1 as $key => $val) {
  if(isset($albumids[$val->ID])) {
    $val->album_id = $albumids[$val->ID];
  }
 }
}

print_r($array1);

You would get the expected result

Edit: I had to correct the following line from: $val->albumid = $albumids[$val->id]; to $val->album_id = $albumids[$val->ID];

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top