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

时间:2013-11-18 08:59:37

标签: php arrays loops

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

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 而非 A B C

期望的输出: A B C

为什么会这样?有人可以帮忙吗?我很感激解释。我目前是php的新手。

5 个答案:

答案 0 :(得分:2)

你应该这样:

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);

答案 1 :(得分:1)

尝试使用喜欢。你有所有字符的单个密钥,你需要使用php的字符串连接来创建一个字符串。

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

<select>
#LETTER#
</select>

答案 2 :(得分:0)

<?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;

答案 3 :(得分:0)

我实际上并没有得到你想要做的事情,但似乎你的循环总是只为数组的1个元素分配值,这是#LETTER#..为什么不使用

$data[] = $letter

而是将其循环到select标签

答案 4 :(得分:0)

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

您可以在HTML中实现PHP。

<select>

<?php
foreach($letters as $letter)
{
<option> $letter </option>
}
?>

</select>