0

我正在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值。请给我建议。

4

3 回答 3

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/>';
于 2013-09-28T18:57:42.423 回答
2

它当然会被打印出来——你的浏览器只是没有向你显示它,因为它没有被正确地解析为 HTML,"因为$id变量

如下设置标题:

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']);
于 2013-09-28T18:59:52.123 回答
1

尝试这个:

echo "<b><a href='/test/index.php/test/view?id=$id'>$item</a></b><br/>";

这行得通!

并且是最简单和最干净的选择。在双重转义内部,简单用于 html,通过双重转义,所有变量都写入内部:)。很简单。

于 2013-09-28T19:02:24.080 回答