2011-06-24 184 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']);