通过PHP中的嵌套foreach循环加载数组?

时间:2013-11-09 08:15:27

标签: php arrays foreach

我正在尝试生成一个如下所示的数组:

Array
(
  [Album1] => '<img src="album1_thumb1.jpg">'
  [Album1] => '<img src="album1_thumb2.jpg">'

  [Album2] => '<img src="album2_thumb1.jpg">'
  [Album2] => '<img src="album2_thumb2.jpg">'
)

现在我有两个嵌套的foreach循环,看起来像这样:

$subfolders = glob($directory);
foreach($subfolders as $subfolder) {
    $photos = glob($subfolder.'/*.[Jj][Pp][Gg]');
    foreach($photos as $photo) {
        $thumbnail = $subfolder.'/thumbs/'.$photoname[0].'_thumb.jpg';
        $thumb = '<img src="'.$thumbnail.'" class="thumb_image">';
        $folderthumbs[$subfolder] .= $thumb;
    }
}

这并不完全符合我的要求,因为它基本上创建了一个如下所示的数组:

Array
(
  [Album1] => '<img src="album1_thumb1.jpg"><img src="album1_thumb2.jpg">'

  [Album2] => '<img src="album2_thumb1.jpg"><img src="album2_thumb2.jpg">'
)

我该如何纠正?

最终,我想做的是让每个专辑中的一个随机缩略图在页面下方进一步回响......如果有人可以详细说明如何做到这一点我会很感激,尽管我可以得到数组工作我喜欢然后我可以弄清楚如何做到这一点(我知道我需要使用array_rand())。

谢谢!

1 个答案:

答案 0 :(得分:1)

PHP中的数组实际上是键和值之间的映射。关键必须是独一无二的。因此你不能拥有

  [Album1] => '<img src="album1_thumb1.jpg">'
  [Album1] => '<img src="album1_thumb2.jpg">'

您需要考虑另一种满足您需求的数据结构