2013-05-22 3 views
0

Главный файл;PHP с использованием переменной в включенной функции

$opid=$_GET['opid']; 
include("etc.php"); 

etc.php;

function getTierOne() { ... } 

я могу использовать $ opid переменной до или после того, как функции, но я не могу использовать его в функцию, она возвращает неопределенное значение. Что мне делать, чтобы использовать его с функцией во включенном файле?

+0

'глобального $ opid,' в НАЧАЛЕ функции – k102

ответ

0

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

Есть несколько способов сделать это, один из которых является глобальным ключевым словом:

$someVariable = 'someValue'; 

function getText(){ 
    global $someVariable; 

    echo $someVariable; 
    return; 
} 

getText(); 

Однако, я советовал бы против такого подхода. Что произойдет, если вы измените $someVariable на другое имя? Вам нужно будет перейти к каждой функции, в которую вы ее ввели, и изменить ее. Не очень динамично.

Другой подход был бы это:

$someVariable = 'someValue'; 

function getText($paramater1){ 
    return $parameter1; 
} 

echo getText($someVariable); 

Это более логично, и организовано. Передача переменной в качестве аргумента функции лучше, чем использование ключевого слова global в каждой функции.

В качестве альтернативы переменные POST, REQUEST, SESSION и COOKIE являются суперглобальными. Это означает, что они могут быть использованы в функции без необходимости неявно импортировать их:

// Assume the value of $_POST['someText'] is someValue 

function getText(){ 
    $someText = $_POST['someText']; 
    return $someText; 
} 

echo getText(); // Outputs someValue 
+0

С 'глобальных $ opid' это работает для первой функции, но не в других. В включенном файле есть пять функций. – milesh

+0

Потому что вам нужно использовать ключевое слово 'global' в каждой функции, в которую вы хотите импортировать эту переменную. Например: 'function testFunctionOne() {global $ someVariable; } '' function testFunctionTwo() {global $ someVariable; } 'Как вы можете видеть, использование глобального ключевого слова для каждой функции не очень практично, проверьте это: http://stackoverflow.com/questions/1557787/are-global-variables-in-php-considered- плохая практика, если-так почему –

0
function getTierOne() 
{ 
    global $opid; 
    //... 
}