Php 在foreach循环中通过constfoo创建常量

Php 在foreach循环中通过constfoo创建常量,php,foreach,constants,Php,Foreach,Constants,实际上我是这样定义我的常数的 const FILE_A = 'file_a.php'; const FILE_B = 'file_b.php'; const FILE_C = 'file_c.php'; 现在我尝试在foreach循环中定义 $files = array('file_a', 'file_b', 'file_c'); foreach ($files as $file) { const strtoupper($file) = $file . '.php'; } 但不幸的是,它

实际上我是这样定义我的常数的

const FILE_A = 'file_a.php';
const FILE_B = 'file_b.php';
const FILE_C = 'file_c.php';
现在我尝试在foreach循环中定义

$files = array('file_a', 'file_b', 'file_c');
foreach ($files as $file) {
  const strtoupper($file) = $file . '.php';
}
但不幸的是,它不起作用。

您可以使用以下函数:


你不能像那样定义类常量。我不能像define()那样使用const()吗?由于PHP5.3,我可以在全局范围内使用const(),而无需任何类。否。语法规则是不同的。(这在PHP5.6中会有轻微的变化,但即使在那时仍然不起作用)。我以为const()比define()快。为什么要快?使用
const
定义类/接口常量?供“全球”使用`define@const()在编译时运行,而define()在运行时运行。对您来说,这一时刻至关重要吗?它如何影响绩效?或者你定义了数十亿个常数?我使用word
const
仅用于定义类常量-属性。好吧,你说服了我
$files = array('file_a', 'file_b', 'file_c');
foreach ($files as $file) {
  $filename = strtoupper($file);
  define($filename, $file . '.php');
}

print FILE_A;  // or constant("FILE_A");
// file_a.php