如何在div中显示随机选择的图像?

时间:2012-08-09 12:16:54

标签: php scandir

我正在尝试显示来自目录的两个随机选择的图像

显示img.names而不是图像

$dir    = 'memb_area/captcha/imgs/';
$files = scandir($dir);
$rand_keys = array_rand($files, 2);
echo $files[$rand_keys[0]] . "\n";
echo $files[$rand_keys[1]] . "\n";  

也尝试过:

echo '<img src="memb_area/captcha/imgs">' + 'echo $files[$rand_keys[0]] . "\n";'

并且 - 是否可以在页面上的单独div中打印这些图片?

2 个答案:

答案 0 :(得分:3)

+不是有效的PHP连接字符。 .是。通过使用+,您实际上添加这两个字符串,在转换为整数时,等同于0

这一行:
echo '<img src="memb_area/captcha/imgs">' + 'echo $files[$rand_keys[0]] . "\n";'

应该是:(更新)
echo "<img src=\"memb_area/captcha/imgs/".$files[$rand_keys[0]]."\">".PHP_EOL;

更新01:(OP的评论:但刷新后,经过两三次 - 没有显示任何内容。下次刷新 - 显示图像......依此类推。

Scandir php.net(示例#1)说:

Array
(
    [0] => .
    [1] => ..
    [2] => bar.php
    [3] => foo.txt
    [4] => somedir
)

所以,也许你的scandir($foo)返回一个数组,其中有两个键,其中不可见的目录作为它们的值。

试试此代码并告诉我们:

$dir    = 'memb_area/captcha/imgs/';
$files = scandir($dir);

if($files[0] == ".") unset($files[0]);
if($files[1] == "..") unset($files[1]);

$files = array_values($files); // reset array keys back to 0,1,2..

$rand_keys = array_rand($files, 2);
echo $files[$rand_keys[0]] . "\n";
echo $files[$rand_keys[1]] . "\n";  

echo "<img src=\"memb_area/captcha/imgs/".$files[$rand_keys[0]]."\">".PHP_EOL;

答案 1 :(得分:1)

我认为路径上可能存在错误 试试这个:
echo '<img src="memb_area/captcha/imgs/">' + 'echo $files[$rand_keys[0]] . "\n";'

相关问题