1

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

不显示图像,而是显示 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 中打印这些图片?

4

2 回答 2

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 (Example #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;
于 2012-08-09T12:27:57.050 回答
1

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

于 2012-08-09T12:20:56.850 回答