尝试循环遍历数组以返回文件路径名称

时间:2014-07-18 03:30:40

标签: php arrays loops

我是PHP的新手,所以请耐心等待。我正在练习实际情况的编码所以我通过将我的图像路径存储在一个关联数组中来模仿数据库,这样我就可以创建一个返回路径名的函数,从而调用函数来回显我的图像。

我的问题是它只返回数组中的最后一项。我需要函数为每个项目循环遍历数组并返回文件路径,以便我可以将其存储在$ images中,然后将其回显到我需要的位置。

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>

2 个答案:

答案 0 :(得分:2)

问题是您在$path函数中覆盖了returnPath变量。

你想要的是这个:

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

反过来,它将为您提供一系列您可以像这样理解的路径:

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

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

我也非常同意koala_dev's comment。该功能并不真正有效/有用。

由于您已经拥有$images数组,只需:

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

甚至可以通过返回格式化的html <img>标签来打印到HTML DOM来使函数变得有用: - )

答案 1 :(得分:0)

刚阅读多维数组。它非常简单。

  <?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>