请你看看这个脚本,让我知道为什么我会得到
未定义的变量:step1
错误?
<?php
$step1;
function getNums($num1, $num2){
$diff = $num2 - $num1;
$steps =[
round($num1 + $diff/4),
round($num1 + $diff/2),
round($num1 + $diff*.75),
$num2
];
$step1 = $steps[1];
}
getNums(50, 400);
echo $step1;
?>
答案 0 :(得分:4)
函数内部的代码与在其外部运行的代码不同scope,这就是为什么你得到一个关于$step1
未定义的错误 - 它被定义在函数之外。如果您希望能够在函数内部引用它,则需要通过引用将其作为参数传递给函数,或者生成变量global
。
通过引用传递
function getNums( $num1, $num2, &$step1 ){
// ... your code
}
// pass the variable by reference
getNums( 50, 400, $step1 );
echo $step1;
使用global
// accessible globally
global $step1;
function getNums( $num1, $num2 ){
global $step1;
// ... your code, with $step1 accessible
}
getNums( 50, 400 );
echo $step1;
答案 1 :(得分:3)
为什么不通过引用传递它?
<?php
$step1;
function getNums($num1, $num2, &$step1){
$diff = $num2 - $num1;
$steps =[
round($num1 + $diff/4),
round($num1 + $diff/2),
round($num1 + $diff*.75),
$num2
];
$step1 = $steps[1];
}
getNums(50, 400,$step1);
echo $step1;
?>
这应该有效