2

異なる配列値を他の配列キーに一致させることに問題があります。これが私の配列です:

array(3){
  [0]=>array(3){ //image number (mainly used for image display order)
    [0]=>string(1)"1"
    [1]=>string(1)"2"
    [2]=>string(1)"3"
  }
  [1]=>array(3){ //image link
    [0]=>string(8)"img1.jpg"
    [1]=>string(8)"img2.jpg"
    [2]=>string(8)"img3.jpg"
  }
  [2]=>array(3){ //thumbnail link
    [0]=>string(10)"thumb1.jpg"
    [1]=>string(10)"thumb2.jpg"
    [2]=>string(10)"thumb3.jpg"
  }
}

私はsmartyを使用しています。これが私のコードです:

{foreach from=$CARIMGS item=newArr}
   {foreach from=$newArr key=index item=item}               
      {$item} <br>      
   {/foreach}
{/foreach}

これが私が今得たものです:

1
2
3
img1.jpg
img2.jpg
img3.jpg
thumb1.jpg
thumb2.jpg
thumb3.jpg

そして、私はこの結果を得る必要があります:

1 - img1.jpg - thumb1.jpg
2 - img2.jpg - thumb2.jpg
3 - img3.jpg - thumb3.jpg

前もって感謝します!

4

2 に答える 2

0

ここのように配列を一緒に圧縮できます: Is there a php function like python's zip? .

ただし、長さが同じであれば、これは正しく機能します。

出力したい配列の配列が$listであるとしましょう。

次に、 $list = array_map(null, $list[0], $list[1], $list[2]); を実行できます。欲しいものを手に入れるために。

ダッシュが必要な場合は、次のようにすることができます。

$dashes = array(' - ', ' - ', ' - ');
$list = array_map(null, $list[0], $dashes, $list[1], $dashes, $list[2]);

そして今、各行に配列があり、単一の文字列を取得するために内破をマップできます

$list = array_map(implode, $list);

すべてを準備するコードはわずか 3 行です。それが役に立てば幸い。

于 2013-08-16T19:32:38.730 に答える