PHP 随机播放包含(ed)文件
PHP Shuffle Include(ed) Files
我正在尝试使用 SHUFFLE 函数随机显示 FILE1.php 或 FILE2.php。这是我的代码:
<?php
$banner1 = include 'file1.php';
$banner2 = include 'file2.php';
$banners = array( $banner1, $banner2);
shuffle($banners);
print $banners[0]
?>
我遇到的问题 - 如果我不使用 include '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];
那么,正如Fred-ii所说,你可以试试array_rand
。 http://php.net/manual/en/function.array-rand.php
首先你不想给include()
赋值return,因为它只会return false or 1。更多信息参见手册:http://php.net/manual/en/function.include.php
引自那里:
Handling Returns: include returns FALSE on failure and raises a warning. Successful includes, unless overridden by the included file, return 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];
?>
我正在尝试使用 SHUFFLE 函数随机显示 FILE1.php 或 FILE2.php。这是我的代码:
<?php
$banner1 = include 'file1.php';
$banner2 = include 'file2.php';
$banners = array( $banner1, $banner2);
shuffle($banners);
print $banners[0]
?>
我遇到的问题 - 如果我不使用 include '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];
那么,正如Fred-ii所说,你可以试试array_rand
。 http://php.net/manual/en/function.array-rand.php
首先你不想给include()
赋值return,因为它只会return false or 1。更多信息参见手册:http://php.net/manual/en/function.include.php
引自那里:
Handling Returns: include returns FALSE on failure and raises a warning. Successful includes, unless overridden by the included file, return 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];
?>