2016-03-02 68 views
0

我有此代码PHP显示在一个变量(字符串)的可变

$text = "Hello $person"; 
$persons = array("Mike", "Tom", "Foo"); 
foreach ($persons as $person) { 
    echo $text."<br>"; 
} 

的目标是显示:

Hello Mike<br> 
Hello Tom<br> 
Hello Foo<br> 

我想过使用{}和$$,但没有按似乎没有问题。 我错过了什么?

+2

你可以只尝试'回声 “你好” $人 “
”;'代替。不需要'$ text'字符串,然后 – Henders

+0

感谢您指向正确的方向:sprintf – AstrAir

+0

$ text =“Hello%s”; 循环内: echo sprintf($ text,$ person); – AstrAir

回答

3

我错过了什么?

你分配$text到包括$person一个字符串,但$person还没有定义(你应该得到一个Notice: Undefined variable消息)。您可以在循环中定义$text,就像许多其他答案所暗示的一样。但您的代码示例可能看起来比较熟悉sprintf

$text = "Hello %s"; 
$persons = array("Mike", "Tom", "Foo"); 
foreach ($persons as $person) { 
    echo sprintf($text, $person) . "<br>"; 
} 

sprintf()将允许您将参数传递给它来格式化字符串。

-1

试试这个:

$persons = array("Mike", "Tom", "Foo"); 
foreach ($persons as $person) { 
    $text = "Hello $person"; 
    echo $text."<br/>"; 
} 

$文本之外的foreach,因为这个原因$人并没有附和

2

这应该实现它。

$persons = array("Mike", "Tom", "Foo"); 
     foreach ($persons as $person) { 
     echo "Hello " . $person . "<br>"; 
     } 
+0

确实可行,但真正的变量被定义得更加广泛。 – AstrAir

0

为了使这个简单,你可以做

$persons = array("Mike", "Tom", "Foo"); 
foreach ($persons as $person) 
{ echo "hello".$person."<br>"; 
} 

或者,你会做

$text = "Hello"; 
    $persons = array("Mike", "Tom", "Foo"); 
    foreach ($persons as $person) 
    { 
    echo $text." ".$person."<br>"; 
    } 
0

让是一个小创意,可能不是最好的,但它是一个衬垫。

$persons = array("Mike", "Tom", "Foo"); 
echo vsprintf(str_repeat("Hello %s<br>", count($persons)), $persons); 

另外一个衬垫可以不推荐我的解决方案implode

echo "Hello" . implode("<br>Hello ", array("Mike", "Tom", "Foo")) . "<br>"; 

注意来实现,但它是无聊具有相同的答案其他人。

+0

更美丽;-) – AstrAir

0

只需使用foreach添加hello我的做法是非常相似!

$persons = array("Mike", "Tom", "Foo"); 
     foreach ($persons as $person) { 
     echo "Hello " . $person. "<br>";// Remove text and append Hello + break tag ofcourse 
     } 

输出: -

Hello Mike 
Hello Tom 
Hello Foo