У мене є веб-сайт. На цьому веб-сайті я намагаюся генерувати випадкові зображення. Код для цього виглядав безладним, коли його змішували з рештою HTML на головній сторінці, тому я вирішив використати виклик "включити", щоб викликати іншу сторінку з функціями 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");
}
?>
Відповіді:
0 для відповіді № 1Вам потрібно посилатися на змінні всередині функцій глобально, а ще краще - передавати їх як параметри:
// 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");
}
0 для відповіді № 2
Ви можете додати цей рядок перед включеним файлом:
global $total1, $start, $random1, $total2, $random2;
Це зробить такі змінні глобальними, навіть включивши їх у функцію.
0 для відповіді № 3
вам потрібно або передати змінні функціям, або оголосити їх як глобальні у функції ... Настійно рекомендую передавати їх ...
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");
}
Сумніваюся, хтось тут скаже вам оголосити глобальний var. краще передати його функції.
0 для відповіді № 4
Для використання змінної, оголошеної поза простором імен функції, використовуйте global
ключове слово:
$var = 1;
function square()
{
global $var; // import this variable
return $var * $var;
}
Зверніть увагу, що вам слід розглянути використання параметрів функції.
0 для відповіді № 5
Якщо значення ніколи не змінюється, використовуйте define, щоб визначити таку константу, як:
<?php define("START", "1") ?>
Тоді у своєму коді ви можете назвати це так:
$start = START
Це був лише приклад, ви можете просто використовувати СТАРТ, вам не потрібно додавати його до іншої змінної.