Я пытаюсь создать функцию, где я могу передать определенные переменные внутри функции другой функции, чтобы я мог извлечь переменные и использовать их. Позвольте мне сначала показать, что я пытаюсь сделать, поэтому имеет смысл.Почему compact() возвращает пустой массив внутри функции?
function naija_render($filePath, $defined_vars)
{
$viewData = compact(array_keys($defined_vars));
extract($viewData);
ob_start();
include ($filePath . '.php');
$template = ob_get_contents();
ob_end_clean();
return $template;
}
Теперь позвольте мне упростить и уточнить.
если я печатаю этот
print_r(compact(array_keys(get_defined_vars())));
печатает компактный массив, однако, когда я пытаюсь сделать то же самое в функции, так что я могу просто пройти get_defined_vars()
как $defined_vars
, он печатает пустой массив.
function get_compact_defined_vars($defined_vars){
//Returns blank array
print_r(compact(array_keys($defined_vars));
}
Это потому, что функции имеют свой собственный объем. Они не видят никаких переменных, объявленных вне их. Итак, в функции в вашем последнем примере вы говорите ей, чтобы создать массив из всех переменных, определяемых ключами в 'defined_vars', но это невозможно, потому что функция не имеет к ним доступа. –