将一个关联数组转换为关联数组,该数组在php中有一个键和另一个关联阵列作为其值



我有一个关联数组$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
)
)

我想把这个数组转换成一个关联数组,其中"dependent"是一个有两个字段dep_namedep_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_idemp_nameemp_email的关联数组,但无法将dep_iddep_name推入";"从属";领域

试试这个

$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

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

最新更新