Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将常量数组转换为常量字符串_Php - Fatal编程技术网

Php 将常量数组转换为常量字符串

Php 将常量数组转换为常量字符串,php,Php,我有以下代码: const TYPE_A = 'a'; const TYPE_B = 'b'; const TYPE_C = 'c'; const TYPE_ARRAY = [ TYPE_A, TYPE_B, TYPE_C, ]; 我使用类型_数组检查类型是否有效,方法是使用in_数组()。但是我还需要做一个正则表达式检查,但是我不能直接使用这个数组。我需要一个字符串,格式为:“a | b | c”,相当于: implode('|', TYPE_ARRAY); 但不是这样做: const

我有以下代码:

const TYPE_A = 'a';
const TYPE_B = 'b';
const TYPE_C = 'c';

const TYPE_ARRAY = [
TYPE_A,
TYPE_B,
TYPE_C,
];
我使用类型_数组检查类型是否有效,方法是使用in_数组()。但是我还需要做一个正则表达式检查,但是我不能直接使用这个数组。我需要一个字符串,格式为:“a | b | c”,相当于:

implode('|', TYPE_ARRAY);
但不是这样做:

const TYPE_REGEX_STR = "a|b|c";
我想知道是否有可能使用正则表达式将const TYPE_数组自动转换为常量。比如说:

const TYPE_REGEX_STR = implode('|', TYPE_ARRAY);
我知道最后一个例子是不可能的,但有没有其他方法可以做到这一点

这可能看起来很愚蠢,但当您有一个包含许多可能类型的数组时,最好基于const TYPE_数组创建const TYPE_REGEX_STR,而不是单独定义它。这样,添加新类型就更容易了:只需将其添加到数组中,正则表达式字符串就会自动生成

顺便说一句,我需要TYPE_REGEX_STR作为常量,因为Symfony可以在路由要求中使用常量,但不能使用静态函数。

您可以使用


您将要使用define

define( 'TYPE_REGEX_STR', implode('|', TYPE_ARRAY) );

这一点非常有效,但Symfony似乎只能在路由需求中使用类常量,因此在运行时使用define(例如,在控制器类的_construct函数中)不起作用。可怜!但是谢谢你的帮助。谢谢,听起来不错,但问题是Symfony只能在路由需求中使用类常量,而且由于define()是在运行时使用的,我很抱歉不能使用它。请检查这里。也许您可以创建一个类和您尝试使用的方法?
define( 'TYPE_REGEX_STR', implode('|', TYPE_ARRAY) );