首页 > 解决方案 > 将字段添加到我们映射 company_id 的数组

问题描述

我有这个数组,我需要在其中添加另一个字段与 company_count - 我从另一个数组中获取该字段,但问题是当我这样做时,如果我在 company_number 中有 5 个结果,因为我正在取消设置它们我会有当我合并两个数组时只有 5 个结果。有了这个 foreach,我只是抓住了元素并添加了前 5 个结果。

其余的数组示例在这里 https://pastebin.com/LbkmXmMt

正如您所看到的,当我合并两个数组时,我只在前 5 个结果中有 company_number,现在我需要添加第一个数组

array (
  0 => 
  array (
    'id' => '90557',
    'company_id' => '1537',
  ),
  1 => 
  array (
    'id' => '71619',
    'company_id' => '257',
  ),
  2 => 
  array (
    'id' => '87818',
    'company_id' => '7865',
  ),
  3 => 
  array (
    'id' => '87824',
    'company_id' => '7865',
  ),
  4 => 
  array (
    'id' => '87821',
    'company_id' => '7865',
  ),
  5 => 
  array (
    'id' => '52912',
    'company_id' => '11682',
  ),
  6 => 
  array (
    'id' => '85963',
    'company_id' => '2485',
  ),
  7 => 
  array (
    'id' => '80716',
    'company_id' => '2485',
  ),
  8 => 
  array (
    'id' => '79529',
    'company_id' => '2485',
  ),
)
array (
  0 => 
  array (
    'company' => '1537',
    'company_number' => '1091',
  ),
  1 => 
  array (
    'company' => '257',
    'company_number' => '111',
  ),
  2 => 
  array (
    'company' => '7865',
    'company_number' => '33',
  ),
  3 => 
  array (
    'company' => '11682',
    'company_number' => '18',
  ),
  4 => 
  array (
    'company' => '2485',
    'company_number' => '165',
  ),
)

如果我有具有相同公司 ID 的结果,我需要添加相同的 company_number。例如,公司 id = 7865 的数组应该有 company_number = 33,三倍。

我需要结果是这样的

array (
  0 => 
  array (
    'id' => '90557',
    'company_id' => '1537',
    'company_number' => '1091'
  ),
  1 => 
  array (
    'id' => '71619',
    'company_id' => '257',
    'company_number' => '111'
  ),
  2 => 
  array (
    'id' => '87818',
    'company_id' => '7865',
    'company_number' => '33'
  ),
  3 => 
  array (
    'id' => '87824',
    'company_id' => '7865',
    'company_number' => '33'
  ),
  4 => 
  array (
    'id' => '87821',
    'company_id' => '7865',
    'company_number' => '33'
  ),
  5 => 
  array (
    'id' => '52912',
    'company_id' => '11682',
    'company_number' => '18'
  ),
  6 => 
  array (
    'id' => '85963',
    'company_id' => '2485',
    'company_number' => '165'
  ),
  7 => 
  array (
    'id' => '80716',
    'company_id' => '2485',
    'company_number' => '165'
  ),
  8 => 
  array (
    'id' => '79529',
    'company_id' => '2485',
    'company_number' => '165'
  ),
)
$test = array();    
        foreach($individual as $value){
            foreach($value as $j => $users) {
                foreach($company_numbers as $key => $company_num) {
                    if($users['company_id'] == $company_num['company']) {
                        
                        $test[]['company_number'] = $company_num['company_id'];
                        $test[] = $users;
                    }
                }   
            }
        }
array(18) {
  [0]=>
  array(1) {
    ["company_number"]=>
    string(4) "1091"
  }
  [1]=>
  array(18) {
    ["id"]=>
    string(5) "90557"
    ["company_id"]=>
    string(4) "1537"

  }

需要这个在同一个数组中

标签: phpmultidimensional-array

解决方案


我想你想做这样的事情。

首先,您需要使用 ID 循环数组。

$companyIds = [
   ['company_id' => 1537],
   ['company_id' => 250],
   ['company_id' => 250]
];

$companyNumbers = [
   ['company' => 1537, 'company_number' => 33],
   ['company' => 250, 'company_number' => 100],
];

foreach ($companyIds as $key => $id) {
  foreach ($companyNumbers as $numbers) {
    if ($id['company_id'] == $numbers['company']) {
        $companyIds[ $key ]['company_number'] = $numbers['company_number'];
    }
  }
}

如果您将公司 ID 添加为公司编号数组中每个条目的键,则更简单:

$companyIds2 = [  
    ['company_id' => 1537],
    ['company_id' => 250],
    ['company_id' => 250],
];

$companyNumbers2 = [
    1537 => ['company' => 1537, 'company_number' => 33],
    250  => ['company' => 250, 'company_number' => 100],
];

foreach ($companyIds2 as $key => $id) {
    if (array_key_exists( $id['company_id'], $companyNumbers2 )) {
        $companyIds2[ $key ]['company_number'] = $companyNumbers2[$id['company_id']]['company_number'];
    }
}

我希望这就是您正在寻找的答案。


推荐阅读