2016-02-29 2 views
1

У меня есть проблема, когда пытаются объединить два массива в примере PHP.For:Как объединить два массива в PHP

$array1 = Array 
(
    [0] => stdClass Object 
     (
      [user_id] => 1 
      [count] => 6.5 
     ) 
) 

и массив два последующих:

$array2 = Array 
    (
     [0] => stdClass Object 
      (
       [name] => abc 
       [user_id] => 1 
      ), 
     [1] => stdClass Object 
     (
      [name] => xyz 
      [user_id] => 2 
     ), 
    ) 

Я хочу, чтобы объединить два массива выше следует:

$array3 = Array 
(
    [0] => stdClass Object 
     (
      [name] => abc 
      [user_id] => 1 
      [count] => 6.5 
     ), 
    [1] => stdClass Object 
    (
     [name] => xyz 
     [user_id] => 2 
     [count] => 0 //set default = 0 if not exist count 
    ), 
) 

Так что я могу сделать, кто угодно?

+0

Откуда у вас данные? База данных? –

+0

yep, я получаю данные из database.Output что-то вроде моего сообщения –

+0

Как выглядят запросы к базе данных? Вы должны объединить данные непосредственно в базе данных. –

ответ

1

Если эти данные поступают из базы данных, то, скорее всего, самый простой способ добиться результата - использовать соединение в запросе базы данных.

Однако - вот как вы можете сделать это с PHP:

Во-первых, вы хотите переназначить $array1 пользователю ИД пользователя в качестве его ключа. Таким образом, можно избежать необходимости гнезда цикла внутри цикла, чтобы найти количество, и может ссылаться на него сразу же с помощью идентификатора пользователя, который существует в обоих массивах:

// Re-map keys for array 1 so you don't have to loop it every time 
$temp = array(); 
foreach ($array1 as $key => $values) { 
    $temp[$values->user_id] = $values; 
} 
$array1 = $temp 

Here's an example что $array1 выглядит после того, как вы сделали это.

Затем построить ваш $array3 на основе $array2 с добавленной count из $array1, если он существует, в противном случае присвоить ноль по умолчанию:

// Construct your output array 
$array3 = array();  
foreach ($array2 as $values) { 
    $values->count = array_key_exists($values->user_id, $array1) 
     ? $array1[$values->user_id]->count 
     : 0; 
    $array3[] = $values; 
} 

Ваш выход из $array3 будет выглядеть like this.

+0

все сделано, большое спасибо! –

Смежные вопросы