PHP get images in folder返回相同的图像

PHP get images in folder返回相同的图像,php,arrays,joomla,Php,Arrays,Joomla,我正在创建一个joomla模块,它将一篇文章拉入,然后从文件夹中为其分配一个图像(无特定顺序) 但它始终返回相同的图像:/。。。其他一切工作完美,我只需要它抓取不同的图像从文件夹中为每篇文章 下面是mod_slider.php(仅包括基本功能): php(包括整个类): 然后是index.php(仅包括essentials): 文件夹'/'.$items->name?>“/> 非常感谢您的帮助。看起来您实际上并没有选择随机图像。我正在查看的代码如下: $types = arr

我正在创建一个joomla模块,它将一篇文章拉入,然后从文件夹中为其分配一个图像(无特定顺序)

但它始终返回相同的图像:/。。。其他一切工作完美,我只需要它抓取不同的图像从文件夹中为每篇文章

下面是mod_slider.php(仅包括基本功能):

php(包括整个类):

然后是index.php(仅包括essentials):


文件夹'/'.$items->name?>“/>

非常感谢您的帮助。

看起来您实际上并没有选择随机图像。我正在查看的代码如下:

        $types = array_map('trim', explode(',', $params->get('type')));
        $images = array();

        foreach($files as $img){

            if(!is_dir($dir.'/'.$img))
            {
                foreach($types as $type)
                {
                    $muster = '@'.$type.'$@i';

                    if(preg_match($muster, $img))
                    {
                        $item->name = $img;
                        $item->folder = str_replace('\\', '/', $folder);
                    }
                }
            }
        }
您循环浏览所有文件,但如果匹配,您只是将它们相互分配。
$item->name
$item->folder
每次都会被覆盖。我也看不到您实际在哪里对文件列表进行随机化,因此您不能期望出现随机图像。(我假设您可能会使用
$images
进行随机分组或获得所有匹配项,因此您可能可以删除它。)我会在$files上添加
随机分组
,对文件列表进行随机分组,然后在获得第一个匹配项后中断循环,以避免不必要地处理整个列表:

        $types = array_map('trim', explode(',', $params->get('type')));
        shuffle($files);

        foreach($files as $img){

            if(!is_dir($dir.'/'.$img))
            {
                foreach($types as $type)
                {
                    $muster = '@'.$type.'$@i';

                    if(preg_match($muster, $img))
                    {
                        $item->name = $img;
                        $item->folder = str_replace('\\', '/', $folder);
                        break 2;
                    }
                }
            }
        }

将数字分配给变量
$a
的方式是错误的。应该为该变量分配一个数组,如
$a=array(1,2,3,4)
。试试看它是否有效。完成了调试吗?检查了参数是什么?检查了路径生成的内容?检查了在生成的路径中找到的内容?我还是个初学者..我一直在尝试我能做的…@Shef这是我的错误$a=1,2,3,4;从未出现在代码中…@dawidvanderhove开始调试吧正如@MarcB所建议的那样,我们的问题处理得很慢。准确地检查是
$params->get('id'))
返回?Hey似乎工作得很好..谢谢..只有一件事..它将相同的图像分配给某些文章…对此有任何修复..因此它只显示一次图像?要处理这种情况,您需要将
$files
设置为静态变量,只构建一次列表,然后从那时起继续使用它(并且只随机化一次),并且可能在项目与数组匹配时取消设置该项目,以便它在下次运行时不会匹配。
<?php foreach ($item as $items):?>
<img src="<?php echo $items->folder.'/'.$items->name ?>" />
<?php endforeach; ?>
        $types = array_map('trim', explode(',', $params->get('type')));
        $images = array();

        foreach($files as $img){

            if(!is_dir($dir.'/'.$img))
            {
                foreach($types as $type)
                {
                    $muster = '@'.$type.'$@i';

                    if(preg_match($muster, $img))
                    {
                        $item->name = $img;
                        $item->folder = str_replace('\\', '/', $folder);
                    }
                }
            }
        }
        $types = array_map('trim', explode(',', $params->get('type')));
        shuffle($files);

        foreach($files as $img){

            if(!is_dir($dir.'/'.$img))
            {
                foreach($types as $type)
                {
                    $muster = '@'.$type.'$@i';

                    if(preg_match($muster, $img))
                    {
                        $item->name = $img;
                        $item->folder = str_replace('\\', '/', $folder);
                        break 2;
                    }
                }
            }
        }