1

ディレクトリからランダムに選択された2つの画像を表示しようとしています

画像の代わりに 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 連結文字ではありません。.は。を使用する+と、これら 2 つの文字列を効果的に追加できます。整数に変換すると、 と等しくなり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 のコメント:ただし、更新後、2、3 回後 - 何も表示されません。次の更新 - 画像が表示されます... など。 )

Scandir php.net (例 #1) は次のように述べています。

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

したがって、値として非表示のディレクトリscandir($foo)を持つ 2 つのキーを持つ配列を返している可能性があります。

このコードを試して、私に知らせてください:

$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 に答える