PHP 随机播放包含(编辑)文件


PHP Shuffle Include(ed) Files

我正在尝试使用随机显示 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 函数,它会同时显示 file1.php 和 file2.php。

请帮忙。

将这两个文件分配给变量时,您将包含这两个文件。 包括从随机数组中选择的文件。试试这个:

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

当你写$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];

然后,正如弗雷德二世所说,你可以尝试array_rand http://php.net/manual/en/function.array-rand.php

首先你不想分配include()的返回值,因为它只会返回false或1。有关更多信息,请参阅手册:http://php.net/manual/en/function.include.php

还有一句话:

处理退货:失败时包括返回 FALSE 并引发警告。成功的包含,除非被包含的文件覆盖,否则返回 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];
?>