Путаница с областью PHP при использовании функций

У меня есть два разных файла .php, первый называется get_data.php и выглядит так:

<?php
...

$current_date = date("Y-m-d H:i:s");

$total_sales = 35;
$total_revenue = 12;

$this_month_sales = 3;
$this_month_revenue = 7;

$last_month_sales = 2;
$last_month_revenue = 5;

...
?>

Теперь второй файл, который я использую, называется index.phpи наверху index.php у меня есть следующий код, прежде чем любой из моих HTML

<?php include_once 'get_data.php'; ?>

Теперь я могу ссылаться на значения get_data.php изнутри index.php просто введя имя переменной, это работает.

Тем не менее, у меня есть function() Внутри index.php что я использую, чтобы проверить значения и вернуть процент в виде строки

Эта функция выглядит так:

function compareMonths($checkingRevenue) {
global $this_month_revenue;
global $this_month_sales;
global $last_month_revenue;
global $last_month_sales;

...
}

Однако эта функция возвращает «0» для всех четырех переменных. Я пытался не устанавливать их как глобальные. Как я могу получить значения от get_data.php быть в рамках моей функции внутри index.php?

Решением для этого было просто поместить функцию в get_data.php, однако я хочу знать, как правильно установить область видимости, чтобы я мог делать такие вещи в будущем.

Это смущает меня, потому что документация для include_once заявляет

Когда файл включен, код, который он содержит, наследует переменную область строки, в которой происходит включение. Любые переменные, доступные в этой строке в вызывающем файле, будут> доступны в вызываемом файле, начиная с этого момента. Однако все функции и> классы, определенные во включаемом файле, имеют глобальную область видимости.

Что означает, что это должно быть доступно, не так ли?

0

Решение

Если предположить,

global $this_month_revenue;
global $this_month_sales;
global $last_month_revenue;
global $last_month_sales;

переменные, которые вы хотите передать в функцию при вызове. например:

compareMonths($checkingRevenue, $this_month_revenue, $this_month_sales);

function compareMonths($checkingRevenue, $val1, $val2) {}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]