2011-06-24 133 views
0

我想知道下面的代码是PHP中会话变量的最有效的用法。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)。每完成一次传球后,列表就会被洗牌。在打印出任何单个元素两次之前,每个元素都会打印一次。

那么,这是做到这一点最有效的方法吗?

回答

1

我会简化这个如下:

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']);