我正在 foreach循环中创建超链接。它工作正常。当我在URL参数中传递 $ id 时,它无法正常工作。我的链接显示 http:// * ** * /test/index.php/test/view?id=**。我不知道我在这里做错了什么。
foreach($list as $item)
{
$rs[]=$item['uname'];
$id=$item['uid'];
//var_dump($id); here it's printing $id value...
echo '<b> <a href="/test/index.php/test/view?id="'.$id.'">'.$item['uname'].'</a><br/>';
}
我想通过超链接传递 $ id 值。请建议我。
答案 0 :(得分:2)
你有另一个“。
改变这个:
echo '<b> <a href="/test/index.php/test/view?id="'.$id.'">'.$item['uname'].'</a><br/>';
对此:
echo '<b> <a href="/test/index.php/test/view?id='.$id.'">'.$item['uname'].'</a><br/>';
答案 1 :(得分:2)
它当然是打印的 - 您的浏览器只是没有显示给您,因为由于"
变量周围的额外$id
,它没有被正确解析为HTML。
按如下方式设置标题:
header('Content-Type: text/plain');
你会看到它返回的内容如下:
<b> <a href="/test/index.php/test/view?id="55">FOOBAR</a><br/>
^ ? ^
正如您所看到的,问题是55之前的额外双引号。
将您的代码更改为:
echo '<b> <a href="/test/index.php/test/view?id=' . $id .'">'.
$item['uname'] . '</a><br/>';
或者,您也可以使用双引号并将变量括在{}
中,如下所示:
echo "<b> <a href=\"/test/index.php/test/view?id=$id\">{$item['uname']}
</a><br/>";
我使用sprintf
因为它是更清洁。
echo sprintf('<b> <a href="%u">%s</a><br/>', $id, $item['uname']);
答案 2 :(得分:1)
试试这个:
echo "<b><a href='/test/index.php/test/view?id=$id'>$item</a></b><br/>";
这有效!
是最简单,最干净的选择。在双重转义的内部,简单用于html并通过双重转义所有变量都写在里面:)。非常简单。