/ /インクルードされたphpファイルのグローバル変数-php、function、random、include

インクルードされたphpファイルのグローバル変数-php、function、random、include

私はウェブサイトを持っています。このウェブサイトでは、ランダムな画像を生成しようとしています。このコードは、メインページの残りの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を使用するだけで、別の変数に追加する必要はありません。