gpt4 book ai didi

PHP MYSQL 深度查询

转载 作者:行者123 更新时间:2023-11-30 00:58:13 25 4
gpt4 key购买 nike

我是新人,我感到迷失。这段代码是在无限循环吗?
我应该删除第 2-4 行吗?第 19 行“$_row['employee_manager_id'],”还重要吗?
关于我应该如何做到这一点有什么建议吗?谢谢。

function get_employees_by_hierarchy( $_employee_id = 0,$_depth = 0,$_org_array = array() ) {
if ( $this->org_depth < $_depth ) {
$this->org_depth = $_depth;
}
$_depth++;
$_query = "SELECT * FROM employees WHERE ";
if ( !$_employee_id ) {
$_query .= "employee_manager_id IS NULL OR employee_manager_id = 0";
}
else {
$_query .= "employee_manager_id = " . $this->dbh->quoteSmart( $_employee_id );
}
$_result = $this->query( $_query );

while ( $_row = $_result->fetchRow() ) {
$_row['depth'] = $_depth;
array_push( $_org_array, $_row );
$_org_array = $this->get_employees_by_hierarchy(
$_row['employee_manager_id'],
$_depth,
$_org_array
);
}
return $_org_array;
}

最佳答案

从外观上看:

  1. 它确实会无限循环。递归没有终止条件。您需要一个导致此情况的条件:

    $_org_array = $this->get_employees_by_hierarchy(
    $_row['employee_manager_id'],
    $_深度,
    $_org_array
    );

    不运行,或者至少将其分配给不是 get_employees_by_hierarchy 的对象。

    修复此问题后,如果员工在某个时刻成为自己的经理,则会出现无限循环。

  2. 不可能说,“深度”还用在其他地方吗?此函数返回具有“深度”字段的 $_org_array,但我们无法查看它是否已被使用。它当然不会破坏这段代码中的任何内容。

  3. 如果没有看到示例数据,我会说,是的,这很重要。该代码使用自引用员工表进行递归,并使用经理的 ID 作为层次结构的下一级。
  4. 在分配 $_org_array 之前进行检查,检查经理的 ID 是否为空,如果发生这种情况,请执行如下操作:$_org_array = $this

关于PHP MYSQL 深度查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20380357/

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