将两个foreach合二为一

时间:2015-09-25 15:16:28

标签: php

如何将这两个foreach合并为1?

 <?PHP
    $directory = "images/uploads/fexperience/";
    $images = glob($directory . "*.jpg");
    $imagespng = glob($directory . "*.png");
    foreach($images as $image)
    {
        if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {
            echo '<li><a href="frmExcludeImage.php?imagename='.$image.'"><img src="'.$image.'" width="150" height="70" /></a></li>';
        } else{
            echo '<li><a href="'.$image.'" style="background-image:url('.$image.')" ><img src="'.$image.'" width="150" height="70" /></a></li>';
        }
    }
    echo "<br>";
    foreach($imagespng as $imagepng)
    {
        if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {
            echo '<li><a href="frmExcludeImage.php?imagename='.$image.'"><img src="'.$image.'" width="150" height="70" /></a></li>';
        } else{
            echo '<li><a href="'.$image.'" style="background-image:url('.$image.')" ><img src="'.$image.'" width="150" height="70" /></a></li>';
        }
    }
?>

我已经尝试了很多,但是当我这样做时它不起作用,我不知道为什么。它只是停止工作。如何将这2个foreach合并为1?请

2 个答案:

答案 0 :(得分:4)

glob()返回一个简单的数组,所以只需合并两个数组,然后只有一个数组可以循环

$directory = "images/uploads/fexperience/";
$images = array_merge(
    glob($directory . "*.jpg"),
    glob($directory . "*.png")
);

foreach($images as $image) {
    if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {
        echo '<li><a href="frmExcludeImage.php?imagename='.$image.'"><img src="'.$image.'" width="150" height="70" /></a></li>';
    } else{
        echo '<li><a href="'.$image.'" style="background-image:url('.$image.')" ><img src="'.$image.'" width="150" height="70" /></a></li>';
    }
}

修改

如果你想变得非常聪明,你甚至不需要两个整体,但可以在一个glob()中搜索jpgpng

$images = glob($directory . "*.{jpg,png}",  GLOB_BRACE);

答案 1 :(得分:1)

    $directory = "images/uploads/fexperience/";
    $images = glob($directory . "*.jpg");
    $imagespng = glob($directory . "*.png");
    forEachLoop($images);
    forEachLoop($imagespng);

    function forEachLoop($images) {
        foreach($images as $image)
        {
            if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {
                echo '<li><a href="frmExcludeImage.php?imagename='.$image.'"><img src="'.$image.'" width="150" height="70" /></a></li>';
            } else{
                echo '<li><a href="'.$image.'" style="background-image:url('.$image.')" ><img src="'.$image.'" width="150" height="70" /></a></li>';
            }
        }
    }