我很惊讶在下面的代码中,第一个var_dump输出null,而第二个输出正确的值(0.8215)。我该如何解决这个问题?
看一下类似的问题,这类问题似乎来自:
- 太旧版本的php(如here中所述),但我使用的是php 5.6。
- 忘记在函数中放置一个返回(如here或there),但我的函数中有返回。
./MyHelperApp.exe
答案 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));
?>