我的数组显示正常,但我希望内部的链接显示数组的当前值。
这是我的代码:
foreach( $persons as $pid => $p)
{
echo '<a href="?tag=">' . implode( '</a>, <a href="?tag=">', $tags[ $p['id'] ]) . '</a>';
echo '<br /><br />';
}
这就是我要显示的内容:
<a href="?tag=tag1">tag1</a>, <a href="?tag=tag2">tag2</a>
更新 我在其他地方得到了答案。事实证明这很简单。接受答案,这有助于我改进我的代码。
$tags_arr = $tags[$p['id']];
foreach($tags_arr as $v){
$out[] = "<a href='?tag=$v'>$v</a>";
}
答案 0 :(得分:1)
使用http_build_query - 生成URL编码的查询字符串
语法:string http_build_query(mixed $ query_data [,string $ numeric_prefix [,string $ arg_separator [,int $ enc_type = PHP_QUERY_RFC1738]])
返回URL编码的字符串。
<?php
$data = array('foo'=>'bar',
'baz'=>'boom',
'cow'=>'milk',
'php'=>'hypertext processor');
echo http_build_query($data) . "\n";
echo http_build_query($data, '', '&');
?>
以上示例将输出:
富=栏&安培;巴兹=吊杆&安培;牛奶=&安培; PHP超文本= +处理器
富=栏&安培;巴兹=吊杆&安培;牛奶=&安培; PHP超文本= +处理器
答案 1 :(得分:1)
我假设$tags
本身就是一个数组,并且您正在尝试为每个$p['id']
写出每个标记。如果我说得对,请不要使用implode()
。而是使用两个foreach循环。
foreach ($persons as $pid => $p) {
foreach ($tags as $t) {
echo "<a href='?tag={$t[$p['id']]}'>{$t[$p['id']]}</a>\n";
}
}
<强>更新强>
我在这里看到一些问题:
$persons[$row['id']]['title'] = $row['title'];
$persons[$row['id']]['height'] = $row['height'];
$persons[ $row['id'] ] = array( 'id' => $row['id'], 'tag' => $row['tag']);
在上方,您将title
和height
数组键设置为$persons[$row['id']]
。在此之后,您使用新的$persons[$row['id']]
覆盖整个array()
。相反,因为你保持相同的数组键,你可以简单地使用:
$persons[$row['id']] = $row;
现在我认为最严重的问题是:
$tags[ $row['id'] ][] = $row['tag'];
使用[]
表示法,您将$row['tag']
附加到$tags[ $row['id']
作为数组元素,而不是将其值设置为标记。这就是你获得Array(1)
代替标签值的原因。而是使用:
$tags[$row['id']] = $row['tag'];