0

I'm new to PHP so please bear with me. I'm practicing coding for real situations so I mimicked a database by storing my image paths in an associate array so that I could create a function that would return the path name and thus just call the function to echo out my image.

My problem is it's only returning the last item in my array. I need the function to loop through the array for every item and return the file path so that I can store it in $images and then echo that out where I need to.

CODE:

<?php


$images = array(
array('name'  => 'image_00', 'path'  =>  'images/image-00.jpg'),
array('name'  => 'image_01', 'path'  =>  'images/image-01.jpg'),
array('name'  => 'image_02', 'path'  =>  'images/image-02.jpg')
);

function returnPath($filename, $arr) {

    $path = array();

    foreach ($arr as $file) {
        $path = $file[$filename];
    }

    return $path;
}

$images = returnPath('path', $images);

?>

<!DOCTYPE html>
<html>
<head>
    <title>Images Project</title>
</head>
<body>
    <img src="<?php echo $images; ?>"/>
</body>
</html>

1
  • 2
    why exactly do you need that function? why not just loop the images array and echo $image['path'];? Commented Jul 18, 2014 at 3:35

2 Answers 2

2

The issue is that you're over-writing the $path variable in your returnPath function.

What you want is this:

foreach ($arr as $file) {
    $path[] = $file[$filename];
}

Which in turn will give you an array of the paths that you can itterate over like this:

$images = returnPath('path', $images);

<body>
<?php 
foreach($images as $image) {
    echo '<img src="'. $image .'" />';
}
?>
</body>

I also strongly agree with koala_dev's comment. The function isn't really effective/useful.

Since you already have the $images array, just:

foreach($images as $img) {
    echo $img['path'];
}

Or even make the function useful by returning formatted html <img> tags to print to the HTML DOM :-)

Sign up to request clarification or add additional context in comments.

Comments

0

just read on Multi dimensional array. its very simple.

  <?php

    $images = array(
    array('name'  => 'image_00', 'path'  =>  'images/image-00.jpg'),
    array('name'  => 'image_01', 'path'  =>  'images/image-01.jpg'),
    array('name'  => 'image_02', 'path'  =>  'images/image-02.jpg')
    );

    ?>


    <!DOCTYPE html>
    <html>
    <head>
        <title>Images Project</title>
    </head>
    <body>

    <?php
        for($i=0;$i<sizeof($images);$i++){ ?>
        <img src="<? echo $images[$i]['path']; ?>"/>
    <?php }?>

    </body>
    </html>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.