php变量范围在函数的循环中

时间:2014-09-16 14:27:13

标签: php loops variables scope

我想知道有没有办法获取变量的值,这是在函数内部的循环中定义的?

在循环/ if-then-else等中声明的变量是否具有有限的范围(仅在这些块内)?

这是一个函数的例子:

<?php

function getComments($tabName) {
    $sql = "select
                a.owner,
        a.table_name,
        a.column_name,
        a.data_type,
        a.data_length,
        a.data_precision,
        b.comments
            from 
                all_tab_columns a,
        user_col_comments b
            where 
                a.TABLE_NAME = b.table_name
        and a.COLUMN_NAME = b.column_name
        and a.owner = 'CORE' 
        and a.table_name ='" . $tabName . "'
            order by 
                a.column_id";
    $stid = oci_parse(getConnect(), $sql);

    // runs the query above                   
    oci_execute($stid);
    while ($row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS)) {
        foreach ($row as $column => $entry) {
            // Column name
            if ($column == 'COLUMN_NAME') {
                $output = "this is a column";
            }
        }
    }

    return $output;
}

在这里我得到了“Undefined variable:output”错误。

如果我将echo改为$output变量,我会得到结果。

是因为$output范围吗?如何在退货时获得$output值?

1 个答案:

答案 0 :(得分:1)

尝试满足这个条件

        if ($column == 'COLUMN_NAME') {
            $output = "this is a column";
        }

并且您也可以尝试在条件

之后立即返回
        if ($column == 'COLUMN_NAME') {
            return "this is a column";
        }