2014-10-11 3 views
-3

Я начинаю программистом, может ли кто-нибудь описать мне, как работает php-функция? Я искал любой учебник, но я все еще запутался.Понимание функций PHP

Почему эта функция не работает?

<?php 
$name = "Maria"; 
$gender = "Female"; 
$country = "Thailand"; 

function profile(){ 
    echo $name . "<br>"; 
    echo $gender . "<br>"; 
    echo $country . "<br>"; 
} 
profile() 
?> 

Или так:

<?php 
function data(){ 
    $name = "Maria"; 
    $gender = "Female"; 
    $country = "Thailand"; 
} 
function profile(){ 
    echo $name . "<br>"; 
    echo $gender . "<br>"; 
    echo $country . "<br>"; 
} 
data(); 
profile() 
?> 

Или так:

<?php 
function data(){ 
    $name = "Maria"; 
    $gender = "Female"; 
    $country = "Thailand"; 
} 
function profile(){ 
    data(); 
    echo $name . "<br>"; 
    echo $gender . "<br>"; 
    echo $country . "<br>"; 
} 
profile() 
?> 

Как включить переменные в функции PHP? Спасибо за помощь sir ...

+0

'профиль функции() { данные(); echo $ name. "
"; echo $ gender. "
"; echo $ country. "
"; } profile() 'как в этом профиле функции(); вызывает функцию, когда вы вызовете функцию, код внутри '{}' будет выполнен. Спасибо –

+2

http://ru2.php.net/manual/en/language.functions.php –

+2

Пожалуйста, прочитайте [Функции PHP] (http://php.net/manual/en/language.functions.php). SO не является учебным сайтом. – GolezTrol

ответ

2

Я предлагаю читать учебники по этому вопросу, если вы заинтересованы в программировании и хотите узнать больше о том, как код. Просто search о том, как они работают, как передать/вернуть параметры, и как только вы почувствуете себя достаточно комфортно, они продолжают двигаться по более продвинутым функциям.

В вашем примере вы пытаетесь получить доступ к private переменных $name, $gender и $country, которые доступны только в рамках этой функции.

Чтобы получить доступ к global переменных, нужно либо передать их в качестве параметров функции:

function profile($name,$gender,$country) { 
    echo $name . "<br>"; 
    echo $gender . "<br>"; 
    echo $country . "<br>"; 
} 

или использовать global ключевое слово внутри функции:

function profile(){ 
    global $name,$gender,$country; 
    echo $name . "<br>"; 
    echo $gender . "<br>"; 
    echo $country . "<br>"; 
} 
+0

Мне нужно включить некоторые переменные в функцию, поэтому я думаю, что мне нужно использовать «глобальное» ключевое слово ... спасибо за помощь sir ... –

+0

@IrumCantik Это типичный случай, когда выбранный ответ может быть неправильным ответ в долгосрочной перспективе – SuperDJ

2

Попробуйте следующее. Вы должны указать каждую переменную в качестве параметра

<?php 
$name = "Maria"; 
$gender = "Female"; 
$country = "Thailand"; 

function profile($name, $gender, $country){ 
echo $name . "<br>"; 
echo $gender . "<br>"; 
echo $country . "<br>"; 
} 
echo profile($name, $gender, $county); 
?> 

Вы также можете объявить переменную в самой функции.

<?php 
function profile() { 
$name = "Maria"; 
$gender = "Female"; 
$country = "Thailand"; 

echo $name . "<br>"; 
echo $gender . "<br>"; 
echo $country . "<br>"; 
} 
?> 

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

Если вы хотите, чтобы вы вызывали множество переменных, вы могли бы использовать массив.

$data = array('name' => 'Test', 'age' => 18, 'email' => '[email protected]'); 

function profile($data) { 
    foreach($data as $field => $value) { 
     echo 'Field: '.$field.' has a value of: '.$value.'<br>'; 
    } 
} 

echo profile($data); 
// This should return: 
// Field: name has a value of Test 
// Field: age has a value of 18 
// Field: email has a value of [email protected] 

Вы также можете выполнить следующие ссылки:

+0

Что делать, если слишком много переменных? спасибо за ответ ... –

+0

Тогда вы должны, вероятно, переосмыслить то, что вы пытаетесь сделать, передать переменные в массиве или создать для них класс. –

0

Причина этого не что переменные $name, $gender и $country имеют глобальный охват.Внутри функции, вы не можете получить доступ к глобальным переменным, если явно не объявлять их:

<?php 
$name = "Maria"; 
$gender = "Female"; 
$country = "Thailand"; 

function profile(){ 
    global $name, $gender, $country; 
    echo $name . "<br>"; 
    echo $gender . "<br>"; 
    echo $country . "<br>"; 
} 
profile() 
?> 

Сказав, что глобальные переменные, как правило, не чистый способ делать вещи, и их следует избегать. Передача переменных в качестве параметров для ваших функций будет лучше:

<?php 
$name = "Maria"; 
$gender = "Female"; 
$country = "Thailand"; 

function profile($name, $gender, $country) { 
    echo $name . "<br>"; 
    echo $gender . "<br>"; 
    echo $country . "<br>"; 
} 
profile($name, $gender, $country) 
?> 

Таким образом, $name, $gender и $country переменные делаются локальными для функции.

Там намного больше к области видимости переменных, чем я могу описать здесь, но вы можете прочитать об этом in the php documentation

1

Это все о видимости переменных в PHP. Просто взгляните на http://php.net/manual/en/language.variables.scope.php.

Например

$var = 'foo'; 

// not so good example 
function bar() { 
    global $var; 
    echo $var; 
} 
bar(); // echos 'foo'; 

// better example 
function bla($parameter) { 
    echo $parameter; 
} 
bla($var); // echos 'foo'; 

Вы должны понимать область PHP.

Смежные вопросы