我有一个脚本,它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
所需输出:A
B
C
为什么会发生这种情况?有人能帮忙吗?我感谢你的解释。我目前是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;