制作动态数组

时间:2012-06-12 22:59:50

标签: php mysql arrays blogs

根据答案提供给我的答案

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没有返回值

1 个答案:

答案 0 :(得分: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时,您可能还想在$value = htmlentities(trim($value));循环中添加foreach