gpt4 book ai didi

php - 如何遍历这个?

转载 作者:行者123 更新时间:2023-11-29 07:09:50 24 4
gpt4 key购买 nike

我正在开发一个具有基于 Web 的后端和基于 Android 应用程序的前端的应用程序。
后端用于将数据输入MySQl(使用PHP),然后生成JSON,然后将其提供给Android App(前端)并显示。

所以这就是我所拥有的:这是我的数据库

    CREATE TABLE IF NOT EXISTS `tddept` (
`deptId` int(11) NOT NULL AUTO_INCREMENT,
`deptName` varchar(50) NOT NULL,
`deptIsRoot` tinyint(1) NOT NULL,
`deptHasChild` tinyint(1) NOT NULL,
`deptParentId` int(11) NOT NULL,
PRIMARY KEY (`deptId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;

--
-- Dumping data for table `tddept`
--

INSERT INTO `tddept` (`deptId`, `deptName`, `deptIsRoot`, `deptHasChild`, `deptParentId`) VALUES
(2, 'One', 1, 1, 0),
(3, 'Two', 1, 1, 0),
(4, 'Three', 1, 1, 0),
(5, 'One1', 0, 0, 2),
(6, 'One2', 0, 0, 2),
(7, 'One3', 0, 0, 2),
(12, 'Two1', 0, 0, 3),
(13, 'Three1', 0, 0, 4),
(14, 'Dept1', 1, 1, 0),
(15, 'dept1.1', 0, 0, 14);

我的 Intent 很简单,创建一个树结构。只是有多个根节点。因此有多个叶子。

如果简单地说,我正在尝试创建一个目录树结构。我想将上表中的数据显示到下拉菜单中(即使用 <select><option> ):

  • 一个
    • 一个1
    • 一个2
    • 一个3
  • 两个
    • 两个1
    • 三1
  • 部门1
    • 部门1.1

其中一、二、三、Dept1 为根部门,其余为子部门。在未来的某些情况下,我可能必须拥有类似的东西:- 一- - 一个1- - - 一个1a- - - One1b等等等等。

如何使用 Core PHP 遍历它们以及如何以上述结构将它们显示在 <select> 中/<option> (下拉)菜单。

PS:任何有关 JSON 的提示也会有很大帮助。

最佳答案

这是 image2 的解决方案

echo '<select>';

structureTree(0,0);

echo '</select>';

function structureTree($deptParentId, $level){

$result = getDataFromDb($deptParentId); // change this into SQL
foreach($result as $result){
echo '<option value="'.$deptParentId.'">'.str_repeat('-',$level).$result['deptName'].'</option>';
structureTree($result['deptId'], $level+2);
}

}


// mocking database record
function getDataFromDb($deptParentId)
{

$data = array(
array(
'deptId' => 1,
'deptName' => 'IT',
'deptParentId' => 0,
),
array(
'deptId' => 2,
'deptName' => 'Human Resources',
'deptParentId' => 1,
),
array(
'deptId' => 3,
'deptName' => 'Opreational',
'deptParentId' => 1,
),
array(
'deptId' => 4,
'deptName' => 'Networking Department',
'deptParentId' => 1,
),
array(
'deptId' => 5,
'deptName' => 'Software Development',
'deptParentId' => 1,
),
array(
'deptId' => 6,
'deptName' => 'Mobile Software Development',
'deptParentId' => 5,
),
array(
'deptId' => 7,
'deptName' => 'ERP',
'deptParentId' => 5,
),
array(
'deptId' => 8,
'deptName' => 'Product Development',
'deptParentId' => 5,
),
);
$result = array();
foreach ($data as $record) {
if ($record['deptParentId'] === $deptParentId) {
$result[] = $record;
}
}

return $result;

}

关于1.png这是SQL基于您的示例数据库表

SELEC dep.deptId As DepId

,dep.deptName As DepartmenName

,parent.deptId As ParentId

,parent.deptName As ParentDepartmentName

FROM tddept As dep

JOIN tddept As parent ON parent.deptParentId = dep.deptId;

关于php - 如何遍历这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40193480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com