我想知道下面的代码是否是PHP中会话变量的最有效使用。
<?
session_start();
if (!isset($_SESSION['count']) || !isset($_SESSION['randomArray'])) {
$count = 0;
$randomArray = array();
$sql="SELECT youtubeurl FROM Foodlist";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){
array_push($randomArray,$row['youtubeurl']);
}
shuffle($randomArray);
$_SESSION['randomArray'] = $randomArray;
$_SESSION['count'] = $count;
} elseif ($_SESSION['count'] >= sizeof($_SESSION['randomArray'])){
$_SESSION['count'] = 0;
$randomArray = $_SESSION['randomArray'];
shuffle($randomArray);
$_SESSION['randomArray'] = $randomArray;
} else{
$randomArray = $_SESSION['randomArray'];
$count = $_SESSION['count'];
echo $randomArray[$count];
$_SESSION['count']++;
}
?>
如果我做得正确的话,代码的意图应该是显而易见的。但基本上存在一个字符串列表(randomArray),它只循环一次。每次完成后,列表都会被打乱。每个元素打印一次,然后任何单个元素打印两次。
那么,这是最有效的方法吗?
我将简化如下:
if (empty($_SESSION['randomList'])) {
$result = mysql_query("SELECT youtubeurl FROM Foodlist"); // or die(mysql_error())
while ($row = mysql_fetch_assoc($result)) {
$_SESSION['randomList'][] = $row['youtubeurl'];
}
shuffle($_SESSION['randomList']);
}
echo array_shift($_SESSION['randomList']);