PHP COUNT\u递归为关联(分层)数组提供错误输出
谢谢你能提供的任何帮助 我有一个通过PHP从mySQL数据库创建的关联数组(分层)。我在一个共享服务器平台上运行,因此我只能使用mySQL版本5.6.46,这意味着我无法访问“递归CTE”和“WITH”命令。我试图(用PHP)完成的是计算孩子的确切数量(不仅仅是第一个级别,而是下面的所有级别),并将该数量计算到组织层次结构中每个人姓名的末尾。在堆栈溢出问题上花了几个小时寻找如何实现这一点的想法后,我发现很少有人提到这个问题,但我已经能够提取足够的代码,从而得出“部分”起作用的东西。令人沮丧的是不知道为什么它对根级别正确工作,但对下面的级别却不正确。有人能告诉我我的代码中缺少了什么,我应该朝哪个方向走吗?谢谢大家! 下面是关联数组的输出示例。作为补充信息,根目录中正好有72个子/孙子PHP COUNT\u递归为关联(分层)数组提供错误输出,php,arrays,Php,Arrays,谢谢你能提供的任何帮助 我有一个通过PHP从mySQL数据库创建的关联数组(分层)。我在一个共享服务器平台上运行,因此我只能使用mySQL版本5.6.46,这意味着我无法访问“递归CTE”和“WITH”命令。我试图(用PHP)完成的是计算孩子的确切数量(不仅仅是第一个级别,而是下面的所有级别),并将该数量计算到组织层次结构中每个人姓名的末尾。在堆栈溢出问题上花了几个小时寻找如何实现这一点的想法后,我发现很少有人提到这个问题,但我已经能够提取足够的代码,从而得出“部分”起作用的东西。令人沮丧的是不
[
{
"value": "Jim Smith [VP]",
"id": "10003",
"items": [
{
"value": "Michael Jones [Senior Director]",
"id": "10004",
"items": [
{
"value": "Ralph Henry [Director]",
"id": "10012",
"items": [
{
"value": "Michael Peterson [Manager]",
"id": "10046",
"items": []
},
{
"value": "Bryan Gosse [Manager]",
"id": "10048",
"items": []
},
{
"value": "Sally Eichart [Manager]",
"id": "10053",
"items": []
}
]
},
{
"value": "Mike Walsh [Director]",
"id": "10016",
"items": [
{
"value": "Kevin Michaels [Manager]",
"id": "10033",
"items": []
以下是我运行代码时得到的结果:
[
{
"value": "Jim Smith [VP] (72)", //correct!
"id": "10003",
"items": [
{
"value": "Michael Jones [Senior Director] (3)", //should be (19)
"id": "10004",
"items": [
{
"value": "Ralph Henry [Director] (0)", //should be (3)
"id": "10012",
"items": [
{
"value": "Michael Peterson [Manager] (0)", //correct (but is it?)
"id": "10046",
"items": []
},
{
"value": "Bryan Gosse [Manager] (0)", //correct
"id": "10048",
"items": []
},
{
"value": "Sally Eichart [Manager] (0)", //correct
"id": "10053",
"items": []
}
]
},
{
"value": "Mike Walsh [Director] (0)", //should be (4)
"id": "10016",
"items": [
{
"value": "Kevin Michaels [Manager] (0)", //correct
"id": "10033",
"items": []
},
这是我的密码:
public static function getTopCategories()
{
$prime_id = $_SESSION['email_address'];
return self::getCategories('email_address = "' .$prime_id. '"');
}
public static function getCategories($where = '')
{
if ($where) $where = " WHERE $where";
$db = Database::getInstance();
$mysqli = $db->getConnection();
$sql_query = "SELECT CONCAT(primes.first_name, ' ', primes.last_name, ' [', domains.position_root, ']') value, domains.prime_id AS id, domains.mgr_id FROM domains INNER JOIN primes ON domains.prime_id = primes.prime_id $where";
$result = $mysqli->query($sql_query);
$categories = array();
while ($category = mysqli_fetch_assoc($result)){
$my_id = $category['id'];
$category['items'] = OrgChart::getCategories("mgr_id = $my_id");
$categories[] = $category;
$countChildren = (count($category['items'], COUNT_RECURSIVE) / 4);
}
foreach ($categories as &$value) {
$value['value'] = $value['value'] . " (".$countChildren.")";
}
没有人知道我在代码中做错了什么?希望您能考虑一下在何处关注这一点。非常感谢。你好在学习PHP和mySQL的过程中,我从Stack Overflow的所有可用资源中获得了价值。所以我很困惑,为什么没有人对如何解决我贴出的问题有任何想法。我是新来“问”问题的,所以也许我做得不对?我试图提供所有相关的细节,但没有社区的意见。我注意到我在上面找到的大多数资源(其他人之前提出的问题)都是过时的。也许有些事情已经改变了,没有新的问题得到回答?有人能告诉我吗?非常感谢。没有人知道我在代码中做错了什么?希望您能考虑一下在何处关注这一点。非常感谢。你好在学习PHP和mySQL的过程中,我从Stack Overflow的所有可用资源中获得了价值。所以我很困惑,为什么没有人对如何解决我贴出的问题有任何想法。我是新来“问”问题的,所以也许我做得不对?我试图提供所有相关的细节,但没有社区的意见。我注意到我在上面找到的大多数资源(其他人之前提出的问题)都是过时的。也许有些事情已经改变了,没有新的问题得到回答?有人能告诉我吗?非常感谢。