2010-09-02 3 views
2

Для выполнения меньших запросов к базе данных и для ясности кода я хотел бы включить еще не определенную переменную внутри строки. Позже на странице будет объявлена ​​переменная, а строка будет напечатана и оценена. Как мне это сделать?Как включить в строку еще одну переменную? PHP

$str="This $variable is delicious"; 

$array=array("Apple","Pineapple","Strawberry"); 

foreach($array as $variable) 
{ 
    print "$str"; 
} 

ответ

13

Вы можете использовать printf() (или sprintf(), если вы не хотите, чтобы повторить его):

$str = 'This %s is delicious'; 

foreach ($array as $variable) { 
    printf($str, $variable); 
} 
+0

+2. , , , , , , –

+0

Это прекрасно. Огромное спасибо! – matt

+1

Или sprintf(), если вы на самом деле не хотите его эхо. +1 – Mchl

-2
$str='This $variable is delicious'; // so no variable interpolation is performed 

$array=array("Apple","Pineapple","Strawberry"); 

foreach($array as $variable) 
{ 
    // Warning! This is a very bad idea! 
    // Using eval or system might create vulnerabilities! 
    eval('$str="' . $str . '";'); 
    print $str; 
} 
+2

Это действительно плохая идея. Не стоит ниспровергать, потому что, как видно из ответа, это плохая идея. – NullUserException

+0

Поэтому это sayd в листинге .. –

0

Использование str_replace.

Например:

$str = "This is [VARIABLE] is delicious"; 
$array = array("Apple", "Pineapple", "Strawberry"); 

foreach($array as $variable) 
{ 
    print str_replace('[VARIABLE]', $variable, $str); 
} 
+0

Мое решение будет работать, но NullUserException лучше – Mischa

+0

@stereofrog: возможно изменение порядка переменных в (v | s) printf(). Пример № 3 здесь: http://www.php.net/manual/en/function.sprintf.php – Mchl

0

Почему вы не просто сделать:

$array=array("Apple","Pineapple","Strawberry"); 

foreach($array as $variable) { 
    print "This $variable is delicious"; 
} 
+0

Это сработает. Но это не тот код, с которым я работаю. Я просто использовал его для примера. – matt

+0

@matt, что плохо из вас –

0

Возможно, вы ошибаетесь.
Научитесь использовать шаблоны, и вам никогда не понадобятся такие странные вещи.
Просто разделить код на 2 часть:

  • получать всю необходимую информацию
  • отображающую обычную страницу или страницу ошибки

вы увидите, что весь ваш код становится очень аккуратным и многоразовыми

+0

OP может использовать это для i8n – NullUserException

+0

@ Нуль хорошая стрелялка. Я должен был подумать об этом. –

Смежные вопросы