使用函数将float转换为null?

时间:2015-11-09 06:22:35

标签: php

我很惊讶在下面的代码中,第一个var_dump输出null,而第二个输出正确的值(0.8215)。我该如何解决这个问题?

看一下类似的问题,这类问题似乎来自:

- 太旧版本的php(如here中所述),但我使用的是php 5.6。

- 忘记在函数中放置一个返回(如herethere),但我的函数中有返回。

./MyHelperApp.exe

2 个答案:

答案 0 :(得分:1)

问题是由scope问题引起的。函数内部不存在$ab_coefficients数组,因为它在它们之外声明。解决此问题的一种简单方法是在函数中包含行global $ab_coefficients;

function a_coefficient($k) {
    global $ab_coefficients;
    return($ab_coefficients[$k][0]);
}
function b_coefficient($k) {
    global $ab_coefficients;
    return($ab_coefficients[$k][1]);
}

这将使变量在函数内可用。

答案 1 :(得分:1)

您的函数与全局范围并行范围,要解决此问题,您可以执行以下两项操作中的一项。要么将$ab_coefficients数组传递给函数,要么告诉函数从全局范围读取该变量。

参数: (更好的选项)

<?php

$ab_coefficients=array(
     1=>array( 0.9855 , 0.8678 ),
     2=>array( 0.9315 , 0.8215 )
);


function a_coefficient($ab_coefficients, $k) {return($ab_coefficients[$k][0]);}
function b_coefficient($ab_coefficients, $k) {return($ab_coefficients[$k][1]);}

var_dump($ab_coefficients[2][1]);
var_dump(b_coefficient($ab_coefficients, 2));


?>

<强>全局:

<?php

$ab_coefficients=array(
     1=>array( 0.9855 , 0.8678 ),
     2=>array( 0.9315 , 0.8215 )
);


function a_coefficient($k) {global $ab_coefficients;return($ab_coefficients[$k][0]);}
function b_coefficient($k) {global $ab_coefficients;return($ab_coefficients[$k][1]);}

var_dump($ab_coefficients[2][1]);
var_dump(b_coefficient(2));


?>