簡體   English   中英

從 2 個現有數組創建一個多維數組

[英]Creating a multiple dimension array from 2 existing one

在使用 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"

我怎么能有相同的訂單,因為如果不存在,我將其添加為空

試試這個,這里的工作解決方案。 請下次發布正確的數組而不是vardumpprint_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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM