Array( [0] => Array ( [orders] => 5 [manager_customer_id] => 85 ) [1] => Array ( [orders] => 1 [manager_customer_id] => 124 ) [2] => Array ( [orders] => 6 [manager_customer_id] => 86 ) ) Array( [0] => Array ( [name_manager_customer] => Nick Name [manager_customer_id] => 85 [manager_id] => 699 [city_manager_customer] => [shop_manager_customer] => [phone_manager_customer] => [vk_id_manager_customer] => just_nick_name [card_number] => [card_name] => ) [1] => Array ( [name_manager_customer] => Queen Time [manager_customer_id] => 124 [manager_id] => 699 [city_manager_customer] => [shop_manager_customer] => [phone_manager_customer] => [vk_id_manager_customer] => [card_number] => [card_name] => ) [2] => Array ( [name_manager_customer] => БигБен [manager_customer_id] => 86 [manager_id] => 699 [city_manager_customer] => [shop_manager_customer] => [phone_manager_customer] => [vk_id_manager_customer] => [card_number] => [card_name] => ) ) 

They have the same manager_customer_id nor how can I figure out how to combine what would happen

 Array( [0] => Array ( [name_manager_customer] => Nick Name [manager_customer_id] => 85 [manager_id] => 699 [city_manager_customer] => [shop_manager_customer] => [phone_manager_customer] => [vk_id_manager_customer] => just_nick_name [card_number] => [card_name] => [orders] => 5 ) ) 

    2 answers 2

    Take your raw data

     $orders = [ ['orders' => 5, 'manager_customer_id' => 85], ['orders' => 1, 'manager_customer_id' => 124], ['orders' => 6, 'manager_customer_id' => 86] ]; $data = [ [ 'name_manager_customer' => "Nick Name", 'manager_customer_id' => 85, 'manager_id' => 699, ], [ 'name_manager_customer' => "Queen Time", 'manager_customer_id' => 124, 'manager_id' => 699, ], [ 'name_manager_customer' => "БигБен", 'manager_customer_id' => 86, 'manager_id' => 699, ] ]; 

    and convert the first array to a convenient form, where identifiers will be keys

     $odata = array_column($orders, 'orders', 'manager_customer_id'); 

    go through the second array and set the values

     foreach($data as &$d){ $d['orders'] = $odata[$d['manager_customer_id']]; } 

    If it is not necessary to touch the second array, then add the result to the third

     $result = []; foreach($data as $d){ $d['orders'] = $odata[$d['manager_customer_id']]; $result[] = $d; } 

      Another option:

       <?php $a_1 = array( array( 'orders' => 5, 'manager_customer_id' => 85 ), array( 'orders' => 1, 'manager_customer_id' => 124 ), array( 'orders' => 6, 'manager_customer_id' => 86 ) ); $a_2 = array( array( 'name_manager_customer' => 'Nick Name', 'manager_customer_id' => 85, 'manager_id' => 699, 'city_manager_customer' => '', 'shop_manager_customer' => '', 'phone_manager_customer' => '', 'vk_id_manager_customer' => 'just_nick_name', 'card_number' => '', 'card_name' => '' ), array( 'name_manager_customer' => 'Queen Time', 'manager_customer_id' => 124, 'manager_id' => 699, 'city_manager_customer' => '', 'shop_manager_customer' => '', 'phone_manager_customer' => '', 'vk_id_manager_customer' => '', 'card_number' => '', 'card_name' => '' ), array( 'name_manager_customer' => '', 'manager_customer_id' => 86, 'manager_id' => 699, 'city_manager_customer' => '', 'shop_manager_customer' => '', 'phone_manager_customer' => '', 'vk_id_manager_customer' => '', 'card_number' => '', 'card_name' => '' ) ); $result = []; for ($i = 0, $all = count($a_1); $i < $all; $i++) { $result[] = array_merge($a_2[$i], $a_1[$i]); } echo '<pre>'; print_r($result); echo '</pre>'; 
      • Duck there is a question then that it is not necessary to add in pairs, but according to coincident identifiers, and the order may be different. otherwise it is not at all clear what the problem was - teran
      • So wrong the number of orders shows does not match - Sender1050
      • @ Sender1050 seems to be correct: sandbox.onlinephpfunctions.com/code/… Or did I misunderstand? - Edward
      • @Edward, so if you take a separate test, then everything is fine, but in the code, for some reason, it gives the wrong data, well, maybe I did something wrong. - Sender1050
      • @ Sender1050 Well, if it works separately, but does not work in your code, then either you did not correctly indicate the source data in the first post, or you make a mistake in your version. - Edward