从递归函数返回布尔值

时间:2017-01-06 11:02:18

标签: php arrays

我有这个数组:

Array
(
    [self] => Folder A
    [my_data] => Array
        (
        )

    [18] => Array
        (
            [self] => Folder AA
            [my_data] => Array
                (
                    [0] => stdClass Object()
                )
            [20] => Array
                (
                    [self] => Folder AA
                    [my_data] => Array
                        (
                            [0] => stdClass Object()
                        )
                    [21] => Array
                )

我想检查数组中是否存在某些数据。但条件是,它是一个多维数组。如果我在数组中获得任何单个记录(在my_data中),那么我想返回TRUE,否则为FALSE。为此,我做了一个递归函数。

function checkIfDataExists($tab) {
    $status = true;
    if (!count($tab['my_data'])) {
        $status = false;
    }

    if (count($tab) > 2) {
        foreach ($tab as $subTabKey => $subTabValue) {
            if( $subTabKey != 'self' && $subTabKey != 'my_data' ) {
                return checkIfDataExists($subTabValue);
            }
        }
    }

    return $status;
}

但它总是返回FALSE。上面的例子应该返回TRUE,因为[18]的'my_data'中有记录。

编辑:另一个应该返回TRUE的例子

Array
    (
        [self] => Main Folder22
        [my_data] => Array
            (
            )

        [17] => Array
            (
                [self] => New Sub
                [my_data] => Array
                    (
                    )

            )

        [8] => Array
            (
                [self] => sub folder 21
                [my_data] => Array
                    (
                    )

                [9] => Array
                    (
                        [self] => sub folder 211
                        [my_data] => Array
                            (
                                [0] => stdClass Object()
                            )

1 个答案:

答案 0 :(得分:0)

function checkIfDataExists($tab) {
$status = true;
if (!count($tab['my_data'])) {
    $status = false;
}

if (count($tab) > 2) {
    foreach ($tab as $subTabKey => $subTabValue) {
        if( $subTabKey != 'self' && $subTabKey != 'my_data' ) {
            return checkIfDataExists($subTab);
        }
    }
}

return $status;
}