为什么使用function()时使用未定义的变量($ var){}?

时间:2016-11-30 16:44:27

标签: php

$isac_start = microtime(true);

function ilog($m) use ($isac_start){

  $time_elapsed_secs = microtime(true) - $isac_start;
  file_put_contents(__DIR__.'/debug_log.txt', $m . " - time elapsed: " . $time_elapsed_secs . "\n", FILE_APPEND | LOCK_EX);
}

给了我

未定义的变量$isac_start;

为什么呢?如何解决?

2 个答案:

答案 0 :(得分:3)

https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines?redirectedfrom=MSDN 关键字旨在与closures一起使用(请参阅示例3),它不适用于常规函数。以下演示了正确的用法:

use

答案 1 :(得分:2)

use不适用于命名函数,仅适用于匿名函数。为了将$isac_start放入函数范围,您可能只需将其作为附加参数传递,如:

function ilog($m, $isac_start) { ...

use的存在是为了让匿名函数能够从父作用域继承变量,这对于普通的用户定义函数来说并不是必需的。