Jake
Jake

Reputation: 69

PHP Printing a Multidimensional Array to HTML

I had a look around but I'm not sure I can find a specific answer so I apologise if I've missed a suitable post, please link me to it :)

I'm creating a script to search a folder for more folders, and compile a list of all the files in each folder into a multi-array. The folder names will be random so I'm a little lost on how to extract them using a foreach loop.

I'm also confused about the second array in "[0] => Array". My output data from my script currently looks like this:

    Array
(
    [0] => Array
        (
            [folders] => Array
                (
                    [album 1] => Array
                        (
                            [0] => wallpaper-1089283.jpg
                            [1] => wallpaper-2549931.png
                            [2] => wallpaper-379108.jpg
                            [3] => wallpaper-38130.jpg
                        )

                    [album 2] => Array
                        (
                            [0] => ns75FqFLk1v6jEmecgu25IOk8yB.jpg
                            [1] => wallpaper-1627330.jpg
                            [2] => wallpaper-1629402.jpg
                        )

                    [album 3] => Array
                        (
                            [0] => wallpaper-1042083.jpg
                            [1] => wallpaper-176023.jpg
                            [2] => wallpaper-2624435.jpg
                        )

                )

        )

)

So really I want to get that data to output to some html like below. I haven't really done much work with multi arrays and I'm hoping I can learn :)

<div>
    <img src="image.jpg"/>
    <img src="image.jpg"/>
    <img src="image.jpg"/>
</div>
<div>
    <img src="image.jpg"/>
    <img src="image.jpg"/>
    <img src="image.jpg"/>
</div>
<div>
    <img src="image.jpg"/>
    <img src="image.jpg"/>
    <img src="image.jpg"/>
</div>

Upvotes: 1

Views: 196

Answers (5)

skeelsave
skeelsave

Reputation: 178

Try something like this.

$albums = $array[0]['folders'];
foreach ($album as $img_array)
{
  echo "<div>";
    foreach ($img_array as $img)
    {
       echo "<img src='".$img."'/>";
    }
  echo "</div>";
}

Upvotes: 0

user1467267
user1467267

Reputation:

$array = array(
    0 => array(
        'folders' => array(
            'album 1' => array(
                0 => 'wallpaper1.jpg',
                2 => 'wallpaper1.jpg',
                3 => 'wallpaper1.jpg',
            ),
            'album 2' => array(
                0 => 'wallpaper1.jpg',
                2 => 'wallpaper1.jpg',
                3 => 'wallpaper1.jpg',
            ),
            'album 3' => array(
                0 => 'wallpaper1.jpg',
                2 => 'wallpaper1.jpg',
                3 => 'wallpaper1.jpg',
            )
        )
    )
);

$output = '';

foreach ($array[0]['folders'] as $key => $value) {
    $output .= '<div>\n';

    foreach ($value as $file) {
        $output .= '\t<img src="'.$file.'" />\n';
    }

    $output .= '</div>\n';
}

echo $output;

Upvotes: 0

emco
emco

Reputation: 4709

Try this:

foreach($data as $singleFolder) {
  echo '<div>';
   foreach($singleFolder as $img){
     echo "<img src='$img' />";
   }
  echo '</div>'
}

Upvotes: 0

Techie
Techie

Reputation: 45124

foreach($array[0]['folders'] as $albumarray)
{
  echo "<div>";
   foreach(albumarray as $img)
   {
    echo '<img src="'.$img.'"/>'
   }
   echo "</div>";
}

Upvotes: 0

Marc B
Marc B

Reputation: 360652

foreach ($array[0]['folders'] as $albumID => $images) {
    ... <div> ...
   foreach($images as $img) {
      .... <img> here ...
   }
   .... </div>
}

Upvotes: 2

Related Questions