2017-01-25 89 views
1

我試圖從文本文件加載網站url,然後從數組中取消設置該字符串並從數組中選取一個隨機網站。PHP從txtfile獲取鏈接,取消設置數組中的鏈接並獲得隨機數組值

但是,一旦我嘗試從我的函數訪問數組該數組將返回NULL,有人知道我的錯誤位於?

我當前的代碼如下所示:

<?php 

    $activeFile = 'activeSite.txt'; 

    $sites = array(
     'http://wwww.google.com', 
     'http://www.ebay.com', 
     'http://www.icloud.com', 
     'http://www.hackforums.net', 
     'http://www.randomsite.com' 
    ); 

    function getActiveSite($file) 
    { 
     $activeSite = file_get_contents($file, true); 
     return $activeSite; 
    } 

    function unsetActiveSite($activeSite) 
    { 
     if(($key = array_search($activeSite, $sites)) !== false) 
     { 
      unset($sites[$key]); 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

    function updateActiveSite($activeFile) 
    { 
     $activeWebsite = getActiveSite($activeFile); 

     if(!empty($activeWebsite)) 
     { 
      $unsetActive = unsetActiveSite($activeWebsite); 

      if($unsetActive == true) 
      { 
       $randomSite = $sites[array_rand($sites)]; 
       return $randomSite; 
      } 
      else 
      { 
       echo 'Could not unset the active website.'; 
      } 
     } 
     else 
     { 
      echo $activeWebsite . ' did not contain any active website.'; 
     } 
    } 

    $result = updateActiveSite($activeFile); 
    echo $result; 
?> 
+0

這裏有個錯誤:'$ randomSite = $ sites [array_rand($ sites)];'。變量$ sites不存在。 –

+0

但函數外部的數組完全被稱爲$ sites – d45ndx

+0

。其**外**功能。 [php中的變量範圍](http://php.net/manual/en/language.variables.scope.php) – Cashbee

回答

0

$遺址unsetActiveSite功能暫無數據,您需要創建一個名爲「getSites」,它返回$網站陣列和unsetActiveSite

使用功能
function getSites(){ 
    $sites = [ 
     'http://wwww.google.com', 
     'http://www.ebay.com', 
     'http://www.icloud.com', 
     'http://www.hackforums.net', 
     'http://www.randomsite.com' 
    ]; 
return $sites; 
} 
function unsetActiveSite($activeSite) 
{ 
$sites = getSites(); 
    if(($key = array_search($activeSite, $sites)) !== false) 
    { 
     unset($sites[$key]); 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
}