两个scandir数组数组在foreach PHP中需要2个不同的变量

时间:2013-02-06 18:59:50

标签: php arrays foreach scandir

我有以下代码:

    $path=$_SERVER['DOCUMENT_ROOT'] . "/WOWSlider/data1/images";

    $files= array_diff(scandir($path), array('..',".")); 

    $path2=$_SERVER['DOCUMENT_ROOT'] . "/WOWSlider/data1/images/thumbs";

    $files2= array_diff(scandir($path2), array('..',"."));

foreach($files as $plaatje){

    print("

    <a href='WOWSlider/data1/images/$plaatje' class='highslide' onclick='return hs.expand(this)'>
        <img src='WOWSlider/data1/images/thumbs/$thumbnail' alt='Highslide JS'
            title='Click to enlarge' /></a>

    <div class='highslide-caption'>
        $plaatje
    </div>

    ");


}

现在我需要这样的东西:

        $path=$_SERVER['DOCUMENT_ROOT'] . "/WOWSlider/data1/images";

        $files= array_diff(scandir($path), array('..',".")); 

        $path2=$_SERVER['DOCUMENT_ROOT'] . "/WOWSlider/data1/images/thumbs";

        $files2= array_diff(scandir($path2), array('..',"."));

    foreach($files as $plaatje){
foreach($files2 as $thumbnail){

        print("

        <a href='WOWSlider/data1/images/$plaatje' class='highslide' onclick='return hs.expand(this)'>
            <img src='WOWSlider/data1/images/thumbs/$thumbnail' alt='Highslide JS'
                title='Click to enlarge' /></a>

        <div class='highslide-caption'>
            $plaatje
        </div>

        ");


    }
}

但它不起作用。 它不会在屏幕上打印任何内容。

有人知道该怎么做吗?

我正在尝试制作一种相册。 $ plaatjes是照片,$缩略图是照片的缩略图。

由于缩略图的文件名不同,我需要在foreach中使用不同的变量,因此也需要在print()中使用。

我不想让文件名不同,因为如果我需要添加其他照片,我不需要在代码中做些什么。

1 个答案:

答案 0 :(得分:0)

除非文件名彼此相关,例如

kittens.jpg   -> kittens_thumb.jpg

额外的东西(_thumb)是不变的,你无法以这种自动方式做任何事情。您必须手动构建一个将图像与缩略图相关联的列表。一旦你有了这个数组,那么你可以使用一个简单的foreach()。

使用“相关”文件名,您可以执行以下操作:

foreach($files as $file) {
   $base = pathinfo($file, PATHINFO_BASENAME);
   $ext = pathinfo($file, PATHINFO_EXTENSION);
   echo "real file: $base.$ext";
   echo "thumb nail: {$base}_thumb.$ext";
}