Я предполагаю, что $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'];