我正在尝试显示来自目录的两个随机选择的图像
显示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中打印这些图片?
答案 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";'