Как сделать массив связываемым с использованием implode? - PullRequest
0 голосов
/ 24 сентября 2011

Мой массив отображается правильно, но я бы хотел, чтобы ссылка внутри отображала текущее значение массива.

Вот мой код:

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>";
}

Ответы [ 2 ]

1 голос
/ 24 сентября 2011

Я предполагаю, что $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'];
1 голос
/ 24 сентября 2011

использовать http_build_query - генерировать строку запроса в кодировке URL

SYNTAX: строка http_build_query (смешанная $ query_data [, строка $ numeric_prefix [, строка $ 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, '', '&amp;');

    ?>

Приведенный выше пример выдаст:

Foo = & бар Баз = стрела и корова = молоко & PHP = гипертекстовый + процессор

Foo = & бар Баз = стрела и корова = молоко & PHP = гипертекстовый + процессор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...