我有此代码:
sa=aux.a.sum()
我使用TYPE_ARRAY通过使用in_array()检查类型是否有效。但是我还需要做一个正则表达式检查,但是我不能直接使用此数组。我需要一个形式为“ a | b | c”的字符串,该字符串等效于:
sb=aux.b.sum()
但是代替这样做:
const TYPE_A = 'a';
const TYPE_B = 'b';
const TYPE_C = 'c';
const TYPE_ARRAY = [
TYPE_A,
TYPE_B,
TYPE_C,
];
我想知道是否无法使用regex将const TYPE_ARRAY自动转换为常量。像这样:
implode('|', TYPE_ARRAY);
我知道这最后一个例子是不可能的,但是还有另一种方法吗?
这似乎很愚蠢,但是当您有一个具有许多可能类型的数组时,最好是基于const TYPE_ARRAY创建const TYPE_REGEX_STR,而不是单独定义它。这样,添加新类型会更容易:只需将其添加到数组中,即可自动生成正则表达式字符串。
我需要TYPE_REGEX_STR作为常量,因为Symfony可以在路由需求中使用常量,但不能使用静态函数。
答案 0 :(得分:3)
您可以使用define
<?php
const TYPE_A = 'a';
const TYPE_B = 'b';
const TYPE_C = 'c';
const TYPE_ARRAY = [
TYPE_A,
TYPE_B,
TYPE_C,
];
define ( 'TYPE_REGEX_STR' , implode('|', TYPE_ARRAY) );
echo TYPE_REGEX_STR;
答案 1 :(得分:2)
您将要使用define
define( 'TYPE_REGEX_STR', implode('|', TYPE_ARRAY) );