/ / глобальні змінні у включеному файлі php - php, функція, випадкові, включають

глобальні змінні включеного файлу php - php, функція, випадкові, включають

У мене є веб-сайт. На цьому веб-сайті я намагаюся генерувати випадкові зображення. Код для цього виглядав безладним, коли його змішували з рештою 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

Це був лише приклад, ви можете просто використовувати СТАРТ, вам не потрібно додавати його до іншої змінної.