使用2个独立的维数组时,我正在处理一些不匹配的数据。
所以我有第一个数组$distinctAssg
:
Array (4)
0 => "passport"
1 => "certificates"
2 => "degrees"
3 => "bla bal"
第二个$ group_assgn
Array (2)
test tert => Array (3)
passport => Array (6)
id => "1"
assgn => "passport"
status => "passed"
name => "test"
surname => "tert"
branches_ID => "1"
certificates => Array (6)
id => "2"
assgn => "certificates"
status => "started"
name => "test"
surname => "tert"
branches_ID => "1"
bla bal => Array (6)
id => "4"
assgn => "bla bal"
status => "started"
name => "test"
surname => "tert"
branches_ID => "1"
john doe => Array (3)
passport => Array (6)
id => "1"
assgn => "passport"
status => "started"
name => "john"
surname => "doe"
branches_ID => "1"
certificates => Array (6)
id => "2"
assgn => "certificates"
status => "passed"
name => "john"
surname => "doe"
branches_ID => "1"
degrees => Array (6)
id => "3"
assgn => "degrees"
status => "completed"
name => "john"
surname => "doe"
branches_ID => "1"
因为用户可以根据他们完成的任务分配作业,所以我想建立一个数组来创建一个表,但是我需要数据以正确的顺序排列。为什么我不匹配,因为度数最终是空的。我想和distinctAssg有相同的顺序。
这是我的代码:
$response = array();
foreach ($distinctAssg as $value)
{
foreach ($group_assgn as $key => $user_asg)
{
var_dump($user_asg);
if(in_array($value, array_column($user_asg, 'assgn')))
{
if (!array_key_exists($value, $response[$key])) {
$response[$key] = $user_asg;
}
}
else {
if (!array_key_exists($value, $response[$key])) {
$response[$key][$value] = array('status' => 'empty');
}
}
}
}
这就是我得到的。
Array (2)
test tert=> Array (4)
passport => Array (6)
id => "1"
assgn => "passport"
status => "passed"
name => "test"
surname => "tert"
branches_ID => "1"
certificates => Array (6)
id => "2"
assgn => "certificates"
status => "started"
name => "test"
surname => "tert"
branches_ID => "1"
bla bal => Array (6)
id => "4"
assgn => "bla bal"
status => "started"
name => "test"
surname => "tert"
branches_ID => "1"
degrees => Array (1)
status => "empty"
john doe => Array (4)
passport => Array (6)
id => "1"
assgn => "passport"
status => "started"
name => "john"
surname => "doe"
branches_ID => "1"
certificates => Array (6)
id => "2"
assgn => "certificates"
status => "passed"
name => "john"
surname => "doe"
branches_ID => "1"
degrees => Array (6)
id => "3"
assgn => "degrees"
status => "completed"
name => "john"
surname => "doe"
branches_ID => "1"
bla bal => Array (1)
status => "empty"
我怎么能拥有相同的顺序,因为如果不存在,我将其添加为空
答案 0 :(得分:0)
尝试此可行的解决方案here。请下次发布正确的数组,而不是vardump
或print_r
结果。
$keys = ["passport", "certificates", "degrees", "bla bal"];
$dataArr = [
"test tert" => [
"passport" => [
"id" => "1",
"assgn" => "passport",
"status" => "passed",
"name" => "test",
"surname" => "tert",
"branches_ID" => "1",
],
"certificates" => [
"id" => "2",
"assgn" => "certificates",
"status" => "started",
"name" => "test",
"surname" => "tert",
"branches_ID" => "1",
],
"bla bal" => [
"id" => "4",
"assgn" => "bla bal",
"status" => "started",
"name" => "test",
"surname" => "tert",
"branches_ID" => "1",
]
],
"john doe" => [
"passport" => [
"id" => "1",
"assgn" => "passport",
"status" => "passed",
"name" => "test",
"surname" => "tert",
"branches_ID" => "1",
],
"certificates" => [
"id" => "2",
"assgn" => "certificates",
"status" => "started",
"name" => "test",
"surname" => "tert",
"branches_ID" => "1",
],
"degrees" => [
"id" => "3",
"assgn" => "degrees",
"status" => "completed",
"name" => "john",
"surname" => "doe",
"branches_ID" => "1",
],
],
];
$res = [];
foreach($dataArr as $key=>$val){
$obj_keys = array_keys($val);
foreach($keys as $k){
$res[$key][$k] = in_array($k, $obj_keys)?$val[$k]:[];
}
}
print_r($res);