2012-09-13 34 views
3

讓我們假設我有一個PHP函數,這樣在高速緩存中設置一個標誌:使用合適的詞彙

private function verification($isXLSFile = false) { 

    if ($isXLSFile) { 
     $this->parseXLSFile(); 
    }else { 
     $parsedCSVArr = $this->getCSVarr(); 
     Zend_Registry::get('VMMS_ZEND_CACHE')->save($parsedCSVArr, $this->getXLSCacheName()); 
     Zend_Registry::get('VMMS_ZEND_CACHE')->save($isXLSFile, $this->getXLSCacheName()); 
    } 
} 

然後我調用另一個函數檢查這樣的CACHE:

private function process(){ 
    Logger::info("EnterDataMassUpload - Start Process..."); 
    if (($parsedCSVArr = Zend_Registry::get('VMMS_ZEND_CACHE')->load($this->getXLSCacheName())) === false) { 
     $this->verification(); 
     return; 
    } 
    //if XLS file it reads the lines for each sheet. 
    if ($isXLSFile == true) { 
     $i=0; 
     //make sure there's no duplicated row 
     $parsedCSVArr = array_unique($parsedCSVArr, SORT_REGULAR); 
     foreach($parsedCSVArr as $sheetIndex=>$arr){ 
      foreach ($arr as $k=>$line) { 
       $this->processLine($line, $k); 
       $i++; 
      } 
     } 
    } else { //for a CSV file 
     foreach($parsedCSVArr as $k=>$line){ 
      $this->processLine($line, $k); 
     } 
    } 
    // ... 

,你可以請參閱,我試圖在功能process()中的同一位置存儲2個變量以讀取它。 你知道我的國旗爲什麼不起作用嗎?我的意思..我可以保存在同一個地方的兩個變量:

Zend_Registry::get('VMMS_ZEND_CACHE')->save($parsedCSVArr, $this->getXLSCacheName()); 
Zend_Registry::get('VMMS_ZEND_CACHE')->save($isXLSFile, $this->getXLSCacheName()); 
+1

沒了,每個按鍵都必須是唯一的,就像變量,否則就會覆蓋舊的,請嘗試保存的數組你的變量 – max4ever

+0

謝謝@ max4ever!這是我正在尋找的信息。 – Periback

回答

3

你爲什麼不將它保存在兩個不同的名字呢?

否則,您可以使用序列化保存兩個變量的同名。

Zend_Registry::get('VMMS_ZEND_CACHE')->save(serialize(array('parsedCSVArr' => $parsedCSVArr, 'isXLSFile' => $isXLSFile)), $this->getXLSCacheName()); 

然後,在過程中的作用得到緩存結果和:

$cacheResult['parsedCSVArray']; 
$cacheResult['isXLSFile']; 
+0

我會把它們放在兩個不同的名字下,就像你說的一樣!但是,這也是一個不錯的想法.. upvote – Periback