【问题标题】:Convert an associative array into an associative array which has a key with another associative array as its value in php将关联数组转换为关联数组,该数组具有一个键,另一个关联数组作为其在 php 中的值
【发布时间】:2020-12-21 06:39:02
【问题描述】:

我有一个关联数组 $data:

Array
(
  [0] => Array
  (
    [emp_id] => 1
    [emp_name] => Emp1
    [emp_email] => emp1@example.com
    [dep_id] => 1
    [dep_name] => Mario
  )
  [1] => Array
  (
    [emp_id] => 1
    [emp_name] => Emp1
    [emp_email] => emp1@example.com
    [dep_id] => 2
    [dep_name] => Tony
  )
  [2] => Array
  (
    [emp_id] => 2
    [emp_name] => Emp2
    [emp_email] => emp2@example.com
    [dep_id] => 3
    [dep_name] => Jack
  )
)

我想将此数组转换为关联数组,将“依赖”作为关联数组,其中包含两个字段 dep_name 和 dep_id 字段,如下所示:

Array
(
  [0] => Array
  (
    [emp_id] => 1
    [emp_name] => Emp1
    [emp_email] => emp1@example.com
    [dependant] => [
      [
        [dep_id] => 1
        [dep_name] => Mario
      ]
      [
        [dep_id] => 2
        [dep_name] => Tony
      ]
    ]
)
[1] => Array
(
  [emp_id] => 2
  [emp_name] => Emp2
  [emp_email] => emp2@example.com
  [dependant] => [
    [
        [dep_id] => 3
        [dep_name] => Jack
    ]
  )
)

我试过用这种方式:

$newEmployeeInfo = [];
$newEmployeeKey = [];
$newDependantInfo = [];
$newKey = 0;
foreach($data as $dataKey => $dataValue){
   if(!in_array($dataValue["emp_id"],$newEmployeeKey)){
       ++$newKey;
       $newEmployeeInfo[$newKey]["emp_id"] = $dataValue["emp_id"];
       $newEmployeeInfo[$newKey]["emp_name"] = $dataValue["emp_name"];
       $newEmployeeInfo[$newKey]["emp_email"] = $dataValue["emp_email"];
   }                
   $newEmployeeInfo[$newKey]["dependant"][$dataKey] = $dataValue[$newDependantInfo];       
       $newDependantInfo[$newKey]["dep_id"] = $dataValue["dep_id"];
       $newDependantInfo[$newKey]["dep_name"] = $dataValue["dep_name"];                         
       ];                       
 }

我能够使用键 emp_id、emp_name 和 emp_email 以及各自的值创建关联数组,但无法将 dep_id 和 dep_name 推入“依赖”字段。

【问题讨论】:

    标签: php for-loop


    【解决方案1】:

    试试这个

    $newArr = [];
    foreach($data as $key => $value){
       $newArr[$value['emp_id']]['emp_id'] = $value['emp_id'];
       $newArr[$value['emp_id']]['emp_name'] = $value['emp_name'];
       $newArr[$value['emp_id']]['emp_email'] = $value['emp_email'];
       $newArr[$value['emp_id']]['dependant'][] = [
           'dep_id'=>$value['dep_id'],
           'dep_name'=>$value['dep_name']
        ];
    }
    

    也许您还需要重新索引数组,因为索引将是新 arr 中的 emp_id

    注意:我没有测试过代码。

    【讨论】:

      猜你喜欢
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 2016-05-23
      • 1970-01-01
      • 2017-12-11
      • 2020-04-20
      相关资源
      最近更新 更多