【发布时间】:2017-02-12 16:26:49
【问题描述】:
我正在尝试为大约 1000 多个位置生成经纬度坐标,我知道如何将它们放在一个范围内,但我想知道我是否可以做这样的事情。
for ($i = 0; $i < 10; $i++) {
$lat = function () {
$float = rand(0, 99999) / 99999;
$lat = rand(30, 32);
$lat = $lat + $float;
return $lat;
};
$long = function () {
$float = rand(0, 99999) / 99999;
$long = rand(74, 76);
$long = $long + $float;
return $long;
};
print_r($lat);
}
代码没有抛出想要的结果,我得到了
closureObject()
没有错误,但我似乎无法让它工作,任何帮助都会很棒,我已经尝试阅读文档但没有解释与此相关的任何内容。
这行得通吗?
【问题讨论】:
-
好吧,如果你
print_r()一个函数定义,那么一个闭包对象,你期望什么输出 ? -
在循环外定义闭包,并在循环内调用它们。事实上,你并没有真正做任何事情。
-
记住,闭包是一个函数——你需要调用它来获取一个值。如果您在上面的代码中所做的只是生成随机数,那么为什么还要为闭包而烦恼呢?
-
你没有使用闭包,你只是定义了它们。试试:
print_r($lat());,你应该会看到结果。正如其他人所提到的,为什么不只定义 2 个函数然后在循环中使用这些函数呢? (如果您看到其中的模式,甚至可能是 1 个函数)。