2 回答

TA贡献1806条经验 获得超5个赞
您的代码存在许多问题。我将尝试逐行指出它们并使用替代方法
$max = count($array);
除非您已经检查过$array是否存在,否则应检查上述行。如果不这样做,您最终可能会出现错误:
$max = (isset($array)) ? count($array) : 0;
这两行可以从以下内容压缩:
$item = $array[$i];
$item = str_replace(' ', '', $item);
到以下。这真的是个人的事情。注意:稍后您渲染$item. If $itemcan 是您需要使用的任何东西htmlentities(),以确保您的页面不易受到XSS 攻击。
$item = str_replace(' ', '', $array[$i]);
现在这条线很有趣。您正在为每个$item. 这真的是你想做的吗?
<form method="GET" action="page.php?ders=<?php echo $item;?>" target="_blank" name="f1">
无论哪种方式,您真的要包含该属性target="_blank"吗?
下一个问题是您为每个表单赋予了相同的名称name="f1"。如果不是现在,这很可能会导致问题,然后是任何扩展。像下面这样的东西会更好:
<form method="GET" action="page.php?ders=<?=$item?>" name="f1<?=$item?>">
我相信的下一行暗示了你真正想要的东西。基本上,除非您确实需要提交到的表单,否则它会使您的其余代码看起来毫无意义page.php,我认为您不会这样做,因为您已经ders为表单action属性设置了查询字符串变量。
<a class="btn btn-lg btn-primary"><?php echo $item;?> »</a>
我认为您可以拥有以下内容并删除几乎所有其他内容:
<a href="page.php?ders=<?=$item?>" class="btn btn-lg btn-primary"><?=$item?> »</a>
根据我认为您正在尝试做的事情,您应该能够将其重写为:
<div class="col text-center">
<?php
$max = (isset($array)) ? count($array) : 0;
if (! $max) {
echo 'No items in array to render!';
} else {
for($i=0;$i<$max;$i++){
$item = str_replace(' ', '', $array[$i]);
// make the following one line
echo '<a href="page.php?ders='.$item.'"
class="btn btn-lg btn-primary"
target="_blank">'.$item.' »</a>
<br />';
}
}
?>
</div>

TA贡献1798条经验 获得超7个赞
<div class="col text-center">
<?php
foreach($array as $value):
$item = str_replace(' ', '', $value); ?>
<form method="GET" action="page.php?ders=<?= $item;?>" target="_blank" name="f1">
<input type="hidden" name="item" value="<?= $item;?>">
<a class="btn btn-lg btn-primary"><?= $item;?> »</a>
</form>
<br>
<?php endforeach; ?>
</div>
- 2 回答
- 0 关注
- 126 浏览
添加回答
举报