私はウェブサイトを持っています。このウェブサイトでは、ランダムな画像を生成しようとしています。このコードは、メインページの残りのHTMLと混合すると乱雑に見えたので、「include」呼び出しを使用して、必要なphp関数を使用して別のページを呼び出すことにしました。 コードの特定のブロックを実行するために関数を呼び出す際の問題は、実行時にいくつかのグローバル変数を先頭に配置しようとしたことを認識しないため、数値を出力するときに数値が出力されないことです。それは一度もありませんでした。
誰かがこれを修正する方法を教えてもらえますか?そうすれば、変数を使用して、希望する初期値を持つことができますか?
<?php
$total1 = "4";
$start = "1";
$random1 = mt_rand($start, $total1);
$total2 = "3";
$random2 = mt_rand($start, $total2);
function randomImage1()
{
$file_type = ".jpg";
$image_folder = "Images/Picturebar";
$image_name = $random1 . $file_type;
echo ("<img src="$image_folder/$image_name" alt="$image_name" width="204px" height="100px" />");
echo("$random1");
}
function randomImage2()
{
$file_type = ".jpg";
$image_folder = "Images/Picturebar";
if ($random2 == $random1) {
$random2 = $random2 + 1;
}
$image_name = $random2 . $file_type;
echo "<img src="$image_folder/$image_name" alt="$image_name" width="204px" height="100px" />";
echo("$random2");
}
?>
回答:
回答№1は0関数内で変数をグローバルに参照する必要があります。さらに良いのは、変数をパラメーターとして渡すことです。
// pass $random1 as a parameter
function randomImage1($random1)
{
$file_type = ".jpg";
$image_folder = "Images/Picturebar";
$image_name = $random1 . $file_type;
echo ("<img src="$image_folder/$image_name" alt="$image_name" width="204px" height="100px" />");
echo("$random1");
}
// Pass $random2 as a parameter
function randomImage2($random2)
{
$file_type = ".jpg";
$image_folder = "Images/Picturebar";
if ($random2 == $random1) {
$random2 = $random2 + 1;
}
$image_name = $random2 . $file_type;
echo "<img src="$image_folder/$image_name" alt="$image_name" width="204px" height="100px" />";
echo("$random2");
}
これは、 global
関数内のキーワードですが、上記のようにパラメーターを渡すことをお勧めします。
function randomImage1($random1)
{
// Identify $random1 as the existing global
global $random1;
// Or use $GLOBALS["random1"]
$file_type = ".jpg";
$image_folder = "Images/Picturebar";
$image_name = $random1 . $file_type;
echo ("<img src="$image_folder/$image_name" alt="$image_name" width="204px" height="100px" />");
echo("$random1");
}
回答№2の場合は0
含まれているファイルの前に次の行を追加できます。
global $total1, $start, $random1, $total2, $random2;
これにより、次の変数が関数に含まれていてもグローバルになります。
回答№3の場合は0
変数を関数に渡すか、関数でグローバルとして宣言する必要があります...渡すことを強くお勧めします...
function randomImage1($random1)
{
$file_type = ".jpg";
$image_folder = "Images/Picturebar";
$image_name = $random1 . $file_type;
echo ("<img src="$image_folder/$image_name" alt="$image_name" width="204px" height="100px" />");
echo("$random1");
}
またはこれ:
function randomImage1()
{
global $random1;
$file_type = ".jpg";
$image_folder = "Images/Picturebar";
$image_name = $random1 . $file_type;
echo ("<img src="$image_folder/$image_name" alt="$image_name" width="204px" height="100px" />");
echo("$random1");
}
ただし、ここにいる人がグローバル変数を宣言するように言うとは思えません。関数に渡す方がよいでしょう。
回答№4の場合は0
関数の名前空間の外部で宣言された変数を使用するには、 global
キーワード:
$var = 1;
function square()
{
global $var; // import this variable
return $var * $var;
}
代わりに関数パラメーターの使用を検討する必要があることに注意してください。
回答№5の場合は0
値が変更されない場合は、defineを使用して、次のような定数を定義します。
<?php define("START", "1") ?>
次に、コードで次のように呼び出すことができます。
$start = START
これは単なる例であり、STARTを使用するだけで、別の変数に追加する必要はありません。