简体   繁体   中英

Combine two foreach into one

how can I combine these 2 foreach into 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>';
        }
    }
?>

I've tried a lot but its not working when I do and I don't know why. It just stop working. How can I merge this 2 foreach as 1? Please

glob() returns a simple array, so just merge the two arrays, and then you only have one array to loop over

$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>';
    }
}

EDIT

If you want to be a really smart, you don't even need two globs, but can search for both jpg and png in a single glob():

$images = glob($directory . "*.{jpg,png}",  GLOB_BRACE);
    $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>';
            }
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM