Звучит так, как будто вы хотите преобразовать ассоциативный массив в предложение, например:
$array = array('noun'=>'spot', 'verb'=>'run');
Вы можете просто построить предложение из частей:
$sentence = "See ".$array['noun'].".\n".
"See ".$array['noun']." ".$array['verb'].".\n".
$array['verb']." ".$array['noun'].", ".$array['verb']."!";
Это самый простой и эффективный метод. Однако у него есть некоторые недостатки:
- Может быть трудно читать, особенно если есть большое количество текста или значений для замены.
- Это не может быть очень легко обновлено - вам нужно изменить программу, чтобы изменить структуру предложения.
Другой подход - использовать заполнители в строке и подставлять в значения:
$sentence_template = "See {noun}.\nSee {noun} {verb}. {verb} {noun}, {verb}!";
$from = array();
foreach(array_keys($array) as $label)
$from[] = '{'.$label.'}';
$to = array_values($array);
$sentence = str_replace($from, $to, $sentence_template);
Этот подход позволяет определять строку шаблона отдельно от программы, например, в базе данных или в файле конфигурации, ее также легче читать и поддерживать. С другой стороны;
- Это менее гибко. Например, в первом подходе заглавный глагол в третьей строке будет простым, но таким образом сложнее.
Звучит так, будто на твой вопрос все в порядке.
( Если вы используете второй подход, обязательно сконфигурируйте объект базы данных так, чтобы он возвращал ассоциативные (строковые) элементы, а не числовые элементы, иначе он будет без необходимости искать {0}, {1} и т. Д. )