0

同じ量のアイテムを持つ2つの配列があります。1 つはソーシャル メディアを表すクラスを格納し、もう 1 つの配列はクラスとペアになる URL を保持します。それらは次のようになります。

 $array1 = ([0]=>twitter,[1]=>facebook,[2]=>linkedin);
 $array2 = ([0]=>http://www.twitter.com/username123,[1]=>http://www.facebook.com/user-name123,[2]=>http://www.linkedin.com/stuff/username123);

配列を同時にループ処理し、データをそれぞれの場所に出力して、ソーシャル メディア リンクを作成したいと考えています。私は現在これを持っています:

foreach ($array1 as $k1=>$class){
  foreach ($array2 as $k2=>$URL){
  echo '<li><a href="'.$URL.'" class="'.$class.'">Visit Site</a></li>';
  }
}

これは、入れ子になった foreach が原因だと思います。

ネストされた関数の外に echo ステートメントを移動すると、必要なすべてのクラスが出力されますが、その配列から最後の URL のみが取得されます。

ペアリングごとに単一のリスト項目とリンクの組み合わせを印刷するにはどうすればよいですか? 重複を削除するために array_unique を見てきましたが、私は真面目な PHP n00b です。

ありがとうございました。

4

4 に答える 4

2

それが役立つかもしれません:

$rgLinks = array_combine($array1, $array2);
foreach($rgLinks as $sClass=>$sHref)
{
   echo('<li><a href="'.$sHref.'" class="'.$sClass.'">Visit Site</a></li>');
}
于 2013-08-07T07:37:40.087 に答える
0

それは間違っている。2 つの配列を使用する必要はありません。次のようなものを試してください

$array = array(
        'twitter' => 'http://www.twitter.com/username123',
        'facebook' => 'http://www.facebook.com/user-name123',
        'linkedin' => 'http://www.linkedin.com/stuff/username123'
     );

foreach ($array as $url=>$class){
   echo '<li><a href="'.$url.'" class="'.$class.'">Visit Site</a></li>';
}

またはarray_combine、前の回答で提案されているように使用します。

于 2013-08-07T07:41:20.897 に答える