0

私はこのコードを持っています:

$im = glob($directory . "*.html");
$last = end($im );
$hongi= rand(2, $last);

rand()はパラメーター2が機能し、このパラメーターが文字列であることを期待しているため、これは機能していません。

rand()を可変パラメーターで動作させることは可能ですか?

よろしくお願いします。

編集:

このコードをよりよく説明してください:

私は何千ものファイルを持っており、各ファイル名は数字です。

これらのファイルの名前を配列で抽出しています。

end()を使用して最後の値を取得しています。

$ hongiを使用して、「2」と配列の最後の値の間のランダムな値を取得します。

したがって、ランダムな値が配列の最後の値を超えることはありません。

次のようなファイルパスを取得しているため、非常に基本的なエラーが発生します。

../motor/sector1/17001400300120110111900.html ../motor/sector1/17001400300120110111920.html ../motor/sector1/17001400300120110111930.html ../motor/sector1/17001400300120110111950.html ..

だから私はこれをやっています

$im = glob($directory . "*.html");
$last = end($im );
$numl = substr($last,24,-5);
$hongi= rand(2, $num1);

それは問題ありませんが、Imはこれを行います:

 $hongi= rand(2, $num1);
 $hongi1= rand(2,$num1);
 $hongi2= rand(2, $num1);
$hongi3= rand(2, $num1);
 $hongi4= rand(2, $num1);

しかし、すべての「hongi」変数は同じ結果です。なんで?

4

3 に答える 3

0

文字列を使用してランダムな選択を行う場合は、文字列を配列に入れて配列シャッフルを実行する必要があります。

shuffle($array_of_filenames);
echo $array_of_filenames[0];  

その他の例: http: //php.net/manual/en/function.shuffle.php

于 2012-12-31T06:24:13.470 に答える
-1

型キャストが役立つ場合があります。

$hongi= rand(2, (int)$last);
于 2012-12-31T06:20:50.973 に答える
-1

ランダムなファイル名を取得したい場合は、まず、rand()間違って使用しています。最小値と最大値の間に2つの整数が必要です。maxに指定した値は、整数ではなくファイルパスです。count()$ imが必要で、それを使用します。

$im = glob($directory . "*.html");
$last = count($im);
$hongi= rand(2, $last - 1); // -1 because arrays start at 0
$random_file = $im[$hongi];
于 2012-12-31T06:28:23.950 に答える