массивы — PHP Shuffle Включить (ed) файлы

Я пытаюсь использовать функцию SHUFFLE, чтобы показать FILE1.php или FILE2.php в случайном порядке. Вот мой код:

<?php
$banner1 = include 'file1.php';
$banner2 = include 'file2.php';

$banners = array( $banner1, $banner2);

shuffle($banners);

print $banners[0]
?>

Проблема у меня — если вместо этого включите ‘file1.php’; я просто использую текст или код, он отлично работает.

Но если я перетасую функцию INCLUDE, она покажет ОБА file1php и file2.php одновременно.

Пожалуйста помоги.

3

Решение

Вы включаете оба файла, когда назначаете их переменным. Включите файл, выбранный из перемешанного массива. Попробуй это:

$banner1 = 'file1.php';
$banner2 = 'file2.php';

$banners = array($banner1, $banner2);

shuffle($banners);

include($banners[0]);
5

Другие решения

Когда ты пишешь $banner1 = include 'file1.php';, файл включен.
Это вызов по значению стратегия. Это означает, что когда вы присваиваете значение переменной, значение вычисляется (и здесь ваши файлы включены).

Вот что делает ваш скрипт:

<?php

// Include file1, and put include's return value in $banner1
$banner1 = include 'file1.php';

// Include file2, and put include's return value in $banner2
$banner2 = include 'file2.php';

// Create an array with these return values, shuffle
$banners = array( $banner1, $banner2);
shuffle($banners);

// And print one return value
print $banners[0]

Это не то, что вы хотите. Вы хотите случайным образом выбрать файл, а затем включить его. Ваши сценарии должны выглядеть так:

<?php
$banners = array('file1.php', 'file2.php');
shuffle($banners);
include $banners[0];

Тогда, как сказал Фред-II, вы можете попробовать array_rand, http://php.net/manual/en/function.array-rand.php

4

Во-первых, вы не хотите назначать возвращаемое значение include(), потому что он вернет только false или 1. Для получения дополнительной информации см. руководство: http://php.net/manual/en/function.include.php

И цитата оттуда:

Обработка возвратов: включает возвращает ЛОЖЬ в случае неудачи и выдает предупреждение. Успешные включения, если они не переопределены включенным файлом, возврат 1

Это должно работать для вас:

<?php

ob_start();
require_once("file1.php");
$banner1 = ob_get_contents();

ob_clean();

require_once("file2.php");
$banner2 = ob_get_contents();
ob_end_clean();$banners = [$banner1, $banner2];
shuffle($banners);
echo $banners[0];

?>
3
По вопросам рекламы [email protected]