2015-03-25 5 views
0

Как добавить 2-й массив в 1-й массив, где [myid] соответствует.Как объединить массивы с предложением WHERE?

первый массив

Array 
    (
      [0] => Array 
       (
        [myid] => 70 
        [realname] => Kishore 
        [full_name] => Kishore Chandra 
        [category] => professional 
        [firm_name] => Yes 
        [designation] => Mechanical 
        [address] => Dwarakanagar 5th lane 
        [city] => Vishakhapatnam 
        [email] => [email protected] 
       ) 

      [1] => Array 
       (
        [myid] => 75 
        [realname] => Vinod kumar 
        [full_name] => Kishore Chandra 
        [category] => professional 
        [firm_name] => 
        [designation] => 
        [address] => 
        [city] => 
        [email] => [email protected] 
       ) 
    ) 

второй массив

нужны эти проекты, которые будут добавлены в массив 1

Array 
     (
       [0] => Array 
        (
         [myid] => 70 
         [projects] => 20 
        ) 

       [1] => Array 
        (
         [myid] => 75 
         [projects] => 43 
        ) 
     ) 

Я попытался объединить массив, но не использовать , я получаю еще 2 объекта в is array

Надеюсь, мои требования ясны и читаемы, если нет, пожалуйста, укажите в комментарии, чтобы я мог объяснить это больше.

Ответ может быть в CodeIgniter и я использую рамки CodeIgniter

+0

Можете ли вы показать вкладку le структура, на которую вы хотите поставить где предложение? – n8coder

+0

Это не так, где предложение на самом деле :) Я ожидаю результат, когда «myid» соответствует «myid» в обоих массивах –

ответ

0

предположит, что вы хотите, чтобы результирующий массив будет слияние проектов для первого массива

вы хотите, результирующий набор будет как этот

Array 
(
    [0] => Array 
     (
      [myid] => 70 
      [realname] => Kishore 
      [full_name] => Kishore Chandra 
      [category] => professional 
      [firm_name] => Yes 
      [designation] => Mechanical 
      [address] => Dwarakanagar 5th lane 
      [city] => Vishakhapatnam 
      [email] => [email protected] 
      [projects] => 20 
     ) 

    [1] => Array 
     (
      [myid] => 75 
      [realname] => Vinod kumar 
      [full_name] => Kishore Chandra 
      [category] => professional 
      [firm_name] => 
      [designation] => 
      [address] => 
      [city] => 
      [email] => [email protected] 
      [projects] => 43 
     ) 

) 

поэтому попробуйте этот код

foreach($b as $key => $val){   
    if(isset($a[$key]) && $a[$key]->myid == $val->myid){ 
     $a[$key]->projects = $val->projects; 
    }  
} 

если преобразовал stdArray в массив json_decode ($ а, TRUE) и json_decode ($ Ь, TRUE)

$a = Array 
(
     0 => Array 
      (
       'myid' => 70, 
       'realname' => 'Kishore', 
       'full_name' => 'Kishore Chandra', 
       'category' => 'professional', 
       'firm_name' => 'Yes', 
       'designation' => 'Mechanical', 
       'address' => 'Dwarakanagar 5th lane', 
       'city' => 'Vishakhapatnam', 
       'email' => '[email protected]', 
      ), 

     1 => Array 
      (
       'myid' => 75, 
       'realname' => 'Vinod kumar', 
       'full_name' => 'Kishore Chandra', 
       'category' => 'professional', 
       'firm_name' => '', 
       'designation' => '', 
       'address' => '', 
       'city' => '', 
       'email' => '[email protected]' 
      ) 
); 

$b = Array (0 => Array(
        'myid' => 70, 
        'projects' => 20 
        ), 
      1 => Array(
        'myid' => 75, 
        'projects' => 43 
        ) 
      ); 

foreach($b as $key => $val){   
    if(isset($a[$key]) && $a[$key]['myid'] == $val['myid']){ 
     $a[$key]['projects'] = $val['projects']; 
    }  
} 
print_r($a); 

Примечание:

  1. $ б это второй массив
  2. $ a - 1-й массив
+0

Пытаясь получить свойство не объекта в строке 2 из вашего кода –

+0

, вы изменили переменную $ b на вторую переменную имя и $ a до 1-го массива имя переменной – Raja

+0

да, я сделал!и это подтверждает, что оба массива имеют те же данные, что я упомянул выше, в вопросе –

0
foreach($array1 as $key => $array){ 
    foreach($array as $key2 => $value){ 
    $results[$key]['myid'] = $value; 
    } 
} 

foreach($array2 as $key => $array){ 
    foreach($array as $key3 => $value){ 
    $results[$key3]['projects'] = $value; 
    } 
} 
print_r($results); 
+0

Предполагая, что вы хотите объединить два массива, которые «myid» соответствуют. –

+0

Да, вы обряд, но я получаю второй результат массива, когда я следую приведенному выше коду, который вы опубликовали. Можете ли вы сделать образец PULCKER для этого ответа –

+0

, что будет в $ a, $ b? Если это $ array1 и $ array2, он не работает. –

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