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) );