【问题标题】:multidimensional array push an objectwise not working properly多维数组按对象推送无法正常工作
【发布时间】:2020-09-16 18:55:09
【问题描述】:

我有一个需要以特定方式格式化的数组,但它正在为其中一个对象生成一个随机键。请参阅下面的代码

$temp = [
[
    "UID" => "100",
    "UPID" => "001",
    "PID" => "test1"
],
[
    "UID" => "1001",
    "UPID" => "002",
    "PID" => "test1"
]
];

$child = [];
        foreach ($temp as $key => $value) {
            $child[$value['UID']][$key]['UPID'] = $value['UPID'];
            $child[$value['UID']][$key]['PID'] = $value['PID'];
        }
 $oldParentData['childUserProductDetail'] = $child;
echo "<pre>";

$result = json_encode($oldParentData, true);
print_r($result);

我的预期输出

    {
  "childUserProductDetail": {
    "100": [
      {
        "UPID": "001",
        "PID": "test1"
      }
    ],
    "1001": [
       {
        "UPID": "002",
        "PID": "test1"
      }
    ]
  }
}

获取输出

{

"childUserProductDetail": {
    "100": [
      {
        "UPID": "001",
        "PID": "test1"
      }
    ],
    "1001": {
      "1": {                                // See 1 as key here, that is unwanted
        "UPID": "002",
        "PID": "test1"
      }
    }
  }
}

我不知道第二次数组没有创建,1 来自哪里。请任何人根据我的预期答案更新我的代码。

【问题讨论】:

    标签: php php-7


    【解决方案1】:

    只是一点点改变。删除创建索引的 [Key] 部分,如 0、1。

    所以即使对于UID = 1001,这也是第一条记录,但由于循环,我们需要删除密钥为 1。

    foreach ($temp as $key => $value) {
        $child[$value['UID']][] = ['UPID' => $value['UPID'], 'PID'=> $value['PID']];
    }
    

    【讨论】:

    • 相同的UID 有不同的 UPID 和 PID 所以我需要这里的数组
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 2020-05-07
    相关资源
    最近更新 更多