我有一个从数据库中读取数据的函数。我有一个数组,我想将数据从数据库中放入以便于操作。我在函数外定义我的数组,并在调用函数时填充它。
$rid = "";
if(isset($_GET['rid'])){
$rid = $_GET['rid'];
}
$dates = array();
function getData($rid){
//Db Connection Strings
//Query stuff etc
//DATES
for ($i=0; $i < 5; $i++) {
$mil = (float)$query->table->records->record->f[$i];
$seconds = $mil / 1000;
$dt = gmdate('m-d-Y', $seconds);
$dates[$i] = $dt;
}
print_r($dates);//THIS WORKS
}
getData($rid);
print_r($dates);//THIS DOESN'T
我的问题是:除非我打电话参考函数中的$ date,否则它不会吐出我的数据。我需要在函数外部完成此操作,以便在运行时将值放入文本字段中。
如何将我的值放入$ dates数组中,以便全局使用?谢谢!
答案 0 :(得分:4)
有三种基本方法可以做到这一点:通过引用传递数组,全局调用它,并从函数中返回它。
function getData($rid, &$dates) {
...
for ($i=0; $i < 5; $i++) {
...
$dates[$i] = $dt;
}
}
getData($rid, $dates);
function getData($rid) {
$dates = array();
...
for ($i=0; $i < 5; $i++) {
...
$dates[$i] = $dt;
}
return $dates;
}
$dates = getData($rid);
function getData($rid){
global $dates;
...
for ($i=0; $i < 5; $i++) {
...
$dates[$i] = $dt;
}
}
答案 1 :(得分:2)
这是一个范围问题。您应该将日期作为参考传递,或者作为函数的结果返回日期数组。
function getData($rid){
//Do whatever you need to do.
return $dates;
}
$dates = getData($rid);
print_r($dates);
答案 2 :(得分:2)
只需从函数返回,而不是依赖于全局数据:
function getData($rid) {
// ...
return $dates;
}
print_r(getData($rid));
函数前的$dates
无效,在函数内移动它以正确初始化它。
答案 3 :(得分:1)
在你的函数中声明以下内容:
global $dates;
这将使用全局变量dates
而不是创建局部变量并使用它,这就是现在正在发生的事情。