我有这段代码
$text = "Hello $person";
$persons = array("Mike", "Tom", "Foo");
foreach ($persons as $person) {
echo $text."<br>";
}
目标是显示:
Hello Mike<br>
Hello Tom<br>
Hello Foo<br>
我考虑过使用{}和$$,但这似乎并不合适。 我错过了什么?
答案 0 :(得分: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 :(得分:2)
这应该实现它。
$persons = array("Mike", "Tom", "Foo");
foreach ($persons as $person) {
echo "Hello " . $person . "<br>";
}
答案 2 :(得分: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>";
}
答案 3 :(得分: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>";
注意我不建议使用我的解决方案,但与其他人的答案相同会很无聊。
答案 4 :(得分:0)
使用foreach追加你好我正在做的方式是非常相似的!
$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
答案 5 :(得分:-1)
试试这个:
$persons = array("Mike", "Tom", "Foo");
foreach ($persons as $person) {
$text = "Hello $person";
echo $text."<br/>";
}
$ text在foreach之外,因此$ person没有回应