foreach循环只显示显示的数组中的最后一个元素


foreach loop only display last element from array displayed

我有一个脚本,它select是来自array的字母列表,但问题是它只是display,是数组上的最后一个元素。

PHP:

<?php
$letters = array("A", "B", "C");
foreach($letters as $letter)
{
    $data['#LETTER#'] = $letter;
}
$html = file_get_contents('test.html');
echo $html = str_replace(array_keys($data),array_values($data),$html);
?>

HTML:

<html>
<head>
<title>TRY</title>
</head>
<body>
<select>
<option>#LETTER#</option>
</select>
</body>
</html>

脚本上面的输出只有C,它是数组中的最后一个元素,我只能选择字母C而不能选择AB>C

所需输出:ABC

为什么会发生这种情况?有人能帮忙吗?我感谢你的解释。我目前是php的新手。

你应该这样做:

HTML:

<html>
<head>
<title>TRY</title>
</head>
<body>
<select>
#LETTER_SELECT#
</select>
</body>
</html>

PHP:

$letters = array("A", "B", "C");
$replace_select = "";
foreach($letters as $letter)
{
    $replace_select .= "<option>".$letter."</option>";
}
$html = file_get_contents("test.html");
echo $html = str_replace("#LETTER_SELECT#",$replace_select);

尝试使用like。所有字符都有一个键,需要使用php的字符串concat来生成一个字符串。

foreach($letters as $letter)
{
        $data['#LETTER#'] .= "<option value=$letter>".$letter."</option>";
}
<select>
#LETTER#
</select>

我实际上不明白你在这里要做什么,但你的循环似乎总是只给数组的一个元素赋值,这就是#LETTER#。。为什么不使用

$data[] = $letter

而是在选择标签中循环

每次迭代都覆盖$data中的数组元素。

您可以在HTML中实现PHP。

<select>
<?php
foreach($letters as $letter)
{
<option> $letter </option>
}
?>
</select>
<?php
    $letters = array("A", "B", "C");
    foreach($letters as $letter)
    {
        $data['#LETTER#'] = $letter;
    }
    foreach ($data as $key => $value)
    {
        echo "Key: $key; Value: $value<br />'n";
    }
?>

结果:
密钥:#LETTER#;值:C

$data数组中只有一个元素。尝试$data['#LETTER'.$letter.'#'] = $letter;