在函数内部分配变量时出错

时间:2015-09-02 19:22:49

标签: php

请你看看这个脚本,让我知道为什么我会得到

  

未定义的变量: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;

?>

2 个答案:

答案 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;

?>

这应该有效