首页 > 解决方案 > 如何组合成单个变量数组

问题描述

在我的 php 脚本中,我有这个$array变量。

$array = array('moduleID' => $row1['ModuleID'] , 'module' => $row1['moduleName']);

$array['items'][] = array('groupID' => $row2['GroupID'],'groupname' =>$row2['groupName'] ,'items' => $progName);    

知道如何将两个数组组合成一个变量吗?(不使用array_merge)所以它可以产生这样的结果。

[
  {
   moduleID: "LA1",
   module: "Accounting",
   items: [
    {
     groupID: "LA6",
     groupname: "COA Management",
     items: [
      {
       programID: "LA12",
       programName: "Ledger Management"
      },
      {
       programID: "LA24",
       programName: "Group Management"
      },
      {
       programID: "LA26",
       programName: "Bank Accounts"
      }
     ]
    }
   ]
  },
  ........
]

我尝试这样做,但[ ]首先它丢失了items

$array = array('moduleID' => $row1['ModuleID'] , 'module' => $row1['moduleName'], 'items' => ['groupID' => $row2['GroupID'],'groupname' =>$row2['groupName'] ,'items' => $progName]);

这里我提供完整的php函数

标签: phparraysmultidimensional-array

解决方案


在构建这三个数组的层时,您必须先构建内部数组。以下是适用于您的案例的示例代码:

<?php
$array = array();

$modules = array();
/* logic to get array of modules goes here */
$modules = array(
    array('ModuleID'=>'LA1', 'moduleName'=>'Accounting'), 
    array('ModuleID'=>'LA11', 'moduleName'=>'Development'), 
);
foreach ($modules as $row1) {
    $groups = array();
    /* logic to get array of groups for $row1['ModuleID'] goes here */
    $groups = array(
        array('GroupID'=>'LA6', 'groupName'=>'COA Management'), 
        array('GroupID'=>'LA66', 'groupName'=>'COA Management Part 2'), 
    );
    $groupItems = array();
    foreach ($groups as $row2) {
        $programItems = array();
        /* logic to get array of programs for $row2['GroupID'] goes here */
        $programItems = array(
            array('programID'=>'LA12', 'programName'=>'Ledger Management'),
            array('programID'=>'LA24', 'programName'=>'Group Management'),
            array('programID'=>'LA26', 'programName'=>'Bank Accounts'),
        );
        $groupItems[] = array('groupID'=>$row2['GroupID'], 'groupname'=>$row2['groupName'], 'items'=>$programItems);
    }
    $array[] = array('moduleID' => $row1['ModuleID'] , 'module' => $row1['moduleName'], 'items'=>$groupItems);
}
echo '<pre>'. json_encode($array, JSON_PRETTY_PRINT) . '</pre>'; exit;
?>

推荐阅读