Bro*_*iLD 1 php variables function return-value
我在函数中有一个函数,我需要内部函数使它的变量在父函数的范围内可用,例如:
function sayMyName(){
getName(); // inner function generates $name value
echo $name; // use $name
}
sayMyName();
Run Code Online (Sandbox Code Playgroud)
我可以很容易地将两个函数中的东西全局化......但是我的情况要复杂得多,处理更多变量并且每个变量全局化都有点乏味.
谢谢.
PS我注意到很多"回归"建议.对不起,我不清楚,我需要返回更多的变量..不是一个简单的回报.多谢你们
你可以使用$_GLOBALS,但这是"不好的做法".所以,
1:使用return:
<?php
function getName(){
$name = 'Smith';
return $name;
}
function sayMyName(){
$name = getName();
echo $name;
}
sayMyName();
?>
Run Code Online (Sandbox Code Playgroud)
显示:
Smith
Run Code Online (Sandbox Code Playgroud)
2:使用references:
<?php
function getName(&$name){
$name = 'Smith';
}
function sayMyName(){
getName($name);
echo $name;
}
sayMyName();
?>
Run Code Online (Sandbox Code Playgroud)
显示:
Smith
Run Code Online (Sandbox Code Playgroud)
3:返回array多个变量:
<?php
function getName(){
$surname = 'Smith';
$name = 'John';
return array($surname, $name);
}
function sayMyName(){
list($surname, $name) = getName();
echo $name, ' ', $surname;
}
sayMyName();
?>
Run Code Online (Sandbox Code Playgroud)
显示:
John Smith
Run Code Online (Sandbox Code Playgroud)
4.返回object多个变量的自定义:
<?php
function getName(){
$surname = 'Smith';
$name = 'John';
$buffer = new stdClass();
$buffer->name = $name;
$buffer->surname = $surname;
return $buffer;
}
function sayMyName(){
$obj = getName();
echo $obj->name, ' ', $obj->surname;
}
sayMyName();
?>
Run Code Online (Sandbox Code Playgroud)
显示:
John Smith
Run Code Online (Sandbox Code Playgroud)
5.使用anonymous function与use语句和references:
<?php
function sayMyName(){
$surname = $name = 'Unknown';
$temp = function() use (&$name, &$surname){
$surname = 'Smith';
$name = 'John';
};
$temp();
echo $name, ' ', $surname;
}
sayMyName();
?>
Run Code Online (Sandbox Code Playgroud)
显示:
John Smith
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1151 次 |
| 最近记录: |