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

时间:2019-05-29 13:16:22

标签: php

我有此代码:

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可以在路由需求中使用常量,但不能使用静态函数。

2 个答案:

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