Мне интересно, есть ли способ получить значение переменной, которая была определена в цикле внутри функции?php variable 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 переменной: выход» ошибка.
Если я поставил эхо вместо переменной $output
, я получаю результат.
Это потому, что $output
scope? Как я могу получить значение $output
в моем возвращении?
Кажется, что 'переменных $ output' не создаются потому, что если- условие не было выполнено. Вы должны начать с '$ output = '';' в верхней части своей функции, чтобы избежать этой проблемы. – sjagr
спасибо за подсказку. Однако, когда я пытаюсь $ output = "" в начале, я просто получаю пустой результат в выходе. Он остается неизменным. – Bebus
Наряду с предложением @ ion использовать '$ output. = 'Это столбец';', вы все равно должны изучать ваш if-statement, потому что он явно не выполняется. Вам нужно выяснить, почему этого не происходит. – sjagr