2011-09-23 80 views
0

我的數組顯示正常,但我希望鏈接裏面顯示數組的當前值。如何製作一個使用implode的可鏈接數組?

這裏是我的代碼:

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> 

UPDATE 我得到了答案其他地方。原來這很簡單。接受答案幫助我改進了我的代碼。

$tags_arr = $tags[$p['id']];  
    foreach($tags_arr as $v){ 
    $out[] = "<a href='?tag=$v'>$v</a>"; 
} 
+1

你能不能顯示'$ persons'和'$ tags'的例子內容? –

+0

另一個foreach有什麼問題? –

+0

@michael我已經添加了更多內容,請讓我知道如果您需要其他任何東西或者如果可以做我想要完成的事情。 – checkenginelight

回答

1

我假設$tags是一個數組本身,並且您正試圖寫ou t每個標籤$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"; 
    } 
} 

UPDATE

我在這裏看到了一些問題:

$persons[$row['id']]['title'] = $row['title']; 
    $persons[$row['id']]['height'] = $row['height']; 
    $persons[ $row['id'] ] = array('id' => $row['id'], 'tag' => $row['tag']); 

以上,您將titleheight陣列鍵$persons[$row['id']]。然後,你用新的array()覆蓋整個$persons[$row['id']]。相反,因爲你保持相同的數組鍵,你可以簡單地使用:

$persons[$row['id']] = $row; 

現在,我相信最嚴重的問題是:

$tags[ $row['id'] ][] = $row['tag']; 

通過使用[]符號,要附加到$row['tag']$tags[ $row['id']作爲數組元素而不是將其值設置爲標記。這就是你得到Array(1)代替標籤值的原因。相反使用:

$tags[$row['id']] = $row['tag']; 
+0

我確實有過這樣的事情,但它造成了分離問題。這就是爲什麼我用implode添加逗號。 – checkenginelight

+0

第一部分像魅力一樣工作。當我切換標籤時,我得到一個錯誤'implode()[function.implode]:傳入的參數無效,並且foreach也不起作用。 – checkenginelight

+0

是的,這是我試過的方式。 – checkenginelight

1

使用http_build_query - 生成URL編碼的查詢串

語法:String http_build_query(混合$ query_data [,字符串$ numeric_prefix [,字符串$ arg_separator [摘要$ 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, '', '&amp;'); 

    ?> 

上例將輸出:

富=酒吧&巴茲=吊杆&牛=牛奶& PHP =超文本+處理器

富=酒吧&巴茲=吊杆&牛=牛奶& php =超文本+處理器