Замена возможных констант в переменной - PullRequest
1 голос
/ 26 июня 2011

У меня установлено множество констант.У меня есть фразы из базы данных, которые могут содержать имена этих констант.

Я хочу заменить имена констант их значениями.

Constants:
Array
(
[WORK1] => Pizza Delivery
[WORK2] => Chauffer
[WORK3] => Package Delivery
)

Переменные:

$variable[0] = "I like doing WORK1";
$variable[1] = "Nothing here move along";
$variable[2] = "WORK3 has still not shown up.";

Как бы я получить эти переменные с правильными постоянными значениями на них?Порядок констант может быть как несортированным, так и переменным.

1 Ответ

1 голос
/ 26 июня 2011

Должно быть так же просто, как:

foreach ($variable as &$v)
{
  $v = str_replace(array_keys($constants), array_values($constants), $v);
}
unset($v);

Обратите внимание, что, вероятно, более оптимальным будет сделать что-то подобное до цикла:

$keys = array_keys($constants);
$vals = array_values($constants);

И затем использовать их напрямую вместо вызова array_key / vals во время каждой итерации.

И, если подумать, это, вероятно, лучше:

foreach ($variable as &$v)
{
  $v = strtr($v, $constants);
}
unset($v);

потому что он не обрабатывается первым до последнего, и вы должны получить согласованное поведение независимо от того, как отсортированы константы.

...