1

基于给出的答案对我有用的答案

while($post = mysql_fetch_array($tags)) {
        $push = explode(',', $post['tags']);
        $array = array_merge($array, $push);
}

所以我试图从我的数据库中显示标签并用它们制作链接,如下所示:

<?
$tags = mysql_query( 'SELECT tags  FROM `Table`');
$array = array();
while($post = mysql_fetch_array($tags)) {
$push = explode(',', $post['tags']);
array_push($array, $push);
}
foreach ($array as $value) {?>
    <a href="url.php?tags=<? echo $value?>"><? echo $value?></a>
<? }
?>

然而我得到的只是

    <a href="url.php?tags=Array">Array</a>

我应该至少有三行,就像以前制作的那样

<?
$tags = mysql_query( 'SELECT tags  FROM `Table`');
while($post = mysql_fetch_array($tags)) {
$array = explode(',', $post['tags']);
foreach ($array as $value) {?>
<a href="url.php?tags=<? echo $value?>"><? echo $value?></a>
<? }
}
?>

被调用的代码如下所示:

tag1, tag2, tag3

试过了

while($post = mysql_fetch_array($tags)) {
    $push = explode(',', $post['tags']);
array_merge($array, $push);
}
foreach ($array as $value) {?>
<a href="index.php?tags=<? echo $value?>"><? echo $value?></a>

现在 foreach 不返回值

4

1 回答 1

3

使用array_merge(), 因为array_push()会将作为数组的 的输出explode()作为一个整体推送到第一个参数中的数组,从而创建一个锯齿状数组。

至于您的编辑,这有效:

$array = array_merge($array, $push);

foreach ($array as $value)
{
    echo '<a href="url.php?tags=' . $value . '">' . $value . '</a>';
}

请注意array_merge()(相反array_push(),必须喜欢一致性)不会改变作为其第一个参数传递的数组,因此您必须存储我在第一行($array = ...)中所做的返回值。

在输出到 HTML 时,您可能还希望将 a$value = htmlentities(trim($value));放入foreach循环中。

于 2012-06-12T23:04:31.273 回答