我正在尝试从测试函数中设置三个变量。
到目前为止,这是我的代码:
function test()
{
$x = 1;
$y = 2;
$z = 3;
}
test();
# should print '1', '2', and '3'
echo $x;
echo $y;
echo $z;
答案 0 :(得分:3)
只返回一个对象或一个数组(数组可能就是这样):
function test(){
$data = array(
'x' => 1,
'y' => 2,
'z' => 3
);
return $data;
}
print_r( test() );
或调用每个值:
echo $data['x'];
...
答案 1 :(得分:3)
在这种情况下,有3种易于应用的选项。一种是通过引用传递变量,而不是按值传递。另一种是返回一个数组。另一种选择是使用全局变量 以下是两者的示例:
<?php
function example (&$x, &$y, &$z)
{
$x = 1;
$y = 2;
$z = 3;
}
?>
通过引用传递变量意味着您正在传递实际变量(在计算机内存中为其分配的空间),而不是像往常一样传递值(只是将值传递给函数)。
因此,当您通过引用传递变量(&
字符执行)并且您操纵该值时,原始变量的值也会更改。
<?php
function example ($x, $y, $z)
{
$arr['x'] = 1;
$arr['y'] = 2;
$arr['z'] = 3;
return $arr;
}
?>
现在,您可以使用$arr['x'];
,$arr['y'];
和$arr['z'];
来访问这些值。
<?php
$x = 0;
$y = 0;
$z = 0;
function example ()
{
global $x, $y, $z;
$x = 1;
$y = 2;
$z = 3;
}
?>
答案 2 :(得分:2)
选项:
使用参考文献:
function test(&$x, &$y, &$z) {
$x = 1;
$y = 2;
$z = 3;
}
或返回一个数组并使用extract:
function test() {
return array(
'x' => 1,
'y' => 2,
'z' => 3
);
}
extract(test());
答案 3 :(得分:1)
function func ()
{
return array (
'x' => 1,
'y' => 3,
'z' => 42
);
}
extract (func ());
echo $x, $y, $z;
或
function func ()
{
return array (
1,
3,
42
);
}
list ($x, $y, $z) = func ();
答案 4 :(得分:0)
将变量定义为全局变量?像:
function test()
{
global $x, $y, $z;
$x = 1;
$y = 2;
$z = 3;
}