[英]I want to merge two assoiciative arrays based on index
我有两个索引为 1 到 10 的数组,然后我必须根据索引将其合并。 所以只有一些员工必须添加薪水。
我试过使用array_merge()
但输出没有合并。 我无法获得正确的输出。 输出只是employeeSalary
数组。 为什么会这样?
$employee = array
(
0=>
array("employee_id"=>1, "firstName"=>"Zahir", "lastName"=>"Alam", "Age"=>25, "Company"=>"Switchme", "Role"=>"Developer", "Department"=>"Tech"
,"Head"=>
array("Id"=>3 , "Name"=>"Sourasis Roy")
)
,
1=>
array("employee_id"=>2, "firstName"=>"Amith", "lastName"=>"Manniken", "Age"=>25, "Company"=>"Switchme", "Role"=>"Developer", "Department"=>"Tech"
,"Head"=>
array("Id"=>3 , "Name"=>"Sourasis Roy")
)
,
2=>
array("employee_id"=>3, "firstName"=>"Sourasis", "lastName"=>"Roy", "Age"=>28, "Company"=>"Switchme", "Role"=>"CTO")
,
3=>
array("employee_id"=>4, "firstName"=>"Aditya", "lastName"=>"Mishra", "Age"=>29, "Company"=>"Switchme", "Department"=>"Tech", "Role"=>"CEO")
,
4=>
array("employee_id"=>5, "firstName"=>"Priti", "lastName"=>"Lata", "Age"=>24, "Company"=>"Switchme", "Role"=>"HR")
,
5=>
array("employee_id"=>6, "firstName"=>"Sumita", "lastName"=>"Nath", "Age"=>24, "Company"=>"Switchme", "Role"=>"HLA Head", "Department"=>"Crm")
,
6=>
array("employee_id"=>7, "firstName"=>"Tarini", "lastName"=>"Khanna", "Age"=>22, "Company"=>"Switchme", "Role"=>"Content Writer")
,
7=>
array("employee_id"=>8, "firstName"=>"Abhisek", "lastName"=>"Soni", "Age"=>23, "Company"=>"Switchme", "Role"=>"HLA", "Department"=>"Crm","Head"=>array("Id"=>5 , "Name"=>"Sumita Nath")
)
,
8=>
array("employee_id"=>9, "firstName"=>"Ankit", "lastName"=>"Pump", "Age"=>23, "Company"=>"Switchme", "Role"=>"HLA", "Department"=>"Crm"
,"Head"=>
array("Id"=>5 , "Name"=>"Sumita Nath")
)
,
9=>
array("employee_id"=>10, "firstName"=>"Pogo", "lastName"=>"Laal", "Age"=>23, "Company"=>"Switchme", "Role"=>"Designer")
,
10=>
array("employee_id"=>11, "firstName"=>"Sabina", "lastName"=>"Sekh", "Age"=>28, "Company"=>"Switchme", "Role"=>"HLA Head", "Department"=>"Crm")
,
11=>
array("employee_id"=>12, "firstName"=>"Sanjay", "lastName"=>"Poudal", "Age"=>24, "Company"=>"Switchme", "Role"=>"HLA Head", "Department"=>"Crm"
,"Head"=>
array("Id"=>10 , "Name"=>"Sabina Sekh")
)
,
);
$employee_salary = array
(
7=>
array("employee_id"=>7, "salary"=>"55,000"
)
,
2=>
array("employee_id"=>2, "salary"=>"60,000"
)
,
9=>
array("employee_id"=>9, "salary"=>"50,000"
)
,
10=>
array("employee_id"=>10, "salary"=>"30,000"
)
,
);
$ar= array();
for($j=0;$j<count($employee);$j++)
{
error_reporting(0);
if($employee[$j]=$employee_salary[$j])
{
$ar=$employee[$j]+$employee_salary[$j];
print_r($ar);
echo "<br>";
}
error_reporting(0);
}
正如克里斯·怀特所说,您忘记再添加一个 = 用于比较。并使用isset()检查是否在 employee_salary 的第二个数组中设置了数组索引。 比如if($employee[$j]==isset($employee_salary[$j]))
$employee = array
(
0=>
array("employee_id"=>1, "firstName"=>"Zahir", "lastName"=>"Alam", "Age"=>25, "Company"=>"Switchme", "Role"=>"Developer", "Department"=>"Tech"
,"Head"=>
array("Id"=>3 , "Name"=>"Sourasis Roy")
)
,
1=>
array("employee_id"=>2, "firstName"=>"Amith", "lastName"=>"Manniken", "Age"=>25, "Company"=>"Switchme", "Role"=>"Developer", "Department"=>"Tech"
,"Head"=>
array("Id"=>3 , "Name"=>"Sourasis Roy")
)
,
2=>
array("employee_id"=>3, "firstName"=>"Sourasis", "lastName"=>"Roy", "Age"=>28, "Company"=>"Switchme", "Role"=>"CTO")
,
3=>
array("employee_id"=>4, "firstName"=>"Aditya", "lastName"=>"Mishra", "Age"=>29, "Company"=>"Switchme", "Department"=>"Tech", "Role"=>"CEO")
,
4=>
array("employee_id"=>5, "firstName"=>"Priti", "lastName"=>"Lata", "Age"=>24, "Company"=>"Switchme", "Role"=>"HR")
,
5=>
array("employee_id"=>6, "firstName"=>"Sumita", "lastName"=>"Nath", "Age"=>24, "Company"=>"Switchme", "Role"=>"HLA Head", "Department"=>"Crm")
,
6=>
array("employee_id"=>7, "firstName"=>"Tarini", "lastName"=>"Khanna", "Age"=>22, "Company"=>"Switchme", "Role"=>"Content Writer")
,
7=>
array("employee_id"=>8, "firstName"=>"Abhisek", "lastName"=>"Soni", "Age"=>23, "Company"=>"Switchme", "Role"=>"HLA", "Department"=>"Crm","Head"=>array("Id"=>5 , "Name"=>"Sumita Nath")
)
,
8=>
array("employee_id"=>9, "firstName"=>"Ankit", "lastName"=>"Pump", "Age"=>23, "Company"=>"Switchme", "Role"=>"HLA", "Department"=>"Crm"
,"Head"=>
array("Id"=>5 , "Name"=>"Sumita Nath")
)
,
9=>
array("employee_id"=>10, "firstName"=>"Pogo", "lastName"=>"Laal", "Age"=>23, "Company"=>"Switchme", "Role"=>"Designer")
,
10=>
array("employee_id"=>11, "firstName"=>"Sabina", "lastName"=>"Sekh", "Age"=>28, "Company"=>"Switchme", "Role"=>"HLA Head", "Department"=>"Crm")
,
11=>
array("employee_id"=>12, "firstName"=>"Sanjay", "lastName"=>"Poudal", "Age"=>24, "Company"=>"Switchme", "Role"=>"HLA Head", "Department"=>"Crm"
,"Head"=>
array("Id"=>10 , "Name"=>"Sabina Sekh")
)
,
);
$employee_salary = array
(
7=>
array("employee_id"=>7, "salary"=>"55,000"
)
,
2=>
array("employee_id"=>2, "salary"=>"60,000"
)
,
9=>
array("employee_id"=>9, "salary"=>"50,000"
)
,
10=>
array("employee_id"=>10, "salary"=>"30,000"
)
,
);
$ar= array();
for($j=0;$j<count($employee);$j++)
{
error_reporting(0);
if($employee[$j]==isset($employee_salary[$j]))
{
$ar=$employee[$j]+$employee_salary[$j];
print_r($ar);
echo "<br>";
}
error_reporting(0);
}
工作示例:http: //phpfiddle.org/main/code/dbi8-4krn
尝试以下解决方案,使用问题中给出的数组$employee
和$employee_salary
的值。
$ar= array();
foreach($employee as $j => $v){
$id = $v['employee_id'];
foreach($employee_salary as $i => $u){
$id_s = $u['employee_id'] ;
if($id == $id_s){
$ar = $employee[$j] + $employee_salary[$i];
print_r($ar);
echo "<br>";
}
}
}
我认为也会有一个简单的解决方案。 因为您已经使用 id 键创建了 employee_salary 数组。 所以就会这样。
Foreach($employee as $key=> $value)
{
$employee[$key]['salary'] = $employee_salary[$value['employee_id']]['salary'];
}
Print_r($employee);die;
我想这会帮助你。 谢谢
那应该做
$ar= array();
for($j=0;$j<count($employee);$j++)
{
$ar[$j]=$employee[$j];
if(isset($employee_salary[$employee[$j]["employee_id"]]) && $employee_salary[$employee[$j]["employee_id"]]['employee_id'] == $employee[$j]["employee_id"] ){
$ar[$j]=array_merge($employee[$j],$employee_salary[$employee[$j]["employee_id"]]);
}
}
注意数组键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.