理解PHP函数

时间:2014-10-11 08:31:25

标签: php function variables

我是程序员的初学者,谁能向我描述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函数中包含变量? 谢谢你的帮助先生......

4 个答案:

答案 0 :(得分: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' => 'test@test.com');

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 test@test.com

您还可以点击以下链接:

答案 1 :(得分: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>";
}

答案 2 :(得分: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的范围。

答案 3 :(得分: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