2012-08-10 64 views
4

我需要將數組的內容寫入文件,每次頁面加載時... 我在index.php中創建了數組,並將內容推送到另一個ajax頁面中的數組.. 但是我無法訪問數組全球..其顯示錯誤爲 '未定義的變量$改編' ..如何在PHP中將數組聲明爲全局數組?

這裏是我的代碼..

Index.php page... 

<?php 
    $arr = array(); 

    $ourFileName = "saved_data.txt"; 
    $ourFileHandle = fopen($ourFileName, 'w') or die("can't open file"); 
    fwrite($ourFileHandle, ""); 

?> 

Ajax頁面.....

<?php 
    $name_full = $_GET['name_full']; 
    $arr = $_GET['$arr']; 

    array_push($arr,$name_full); 
    /*------------To create a file-----------------*/ 
    $ourFileName = "saved_data.txt"; 
    $ourFileHandle = fopen($ourFileName, 'w') or die("can't open file"); 
    /*---------To save data in the file------------*/ 
    foreach($arr as $key => $value) 
    { 
     fwrite($ourFileHandle, $value); 
    } 
    fwrite($ourFileHandle, ','); 
    fclose($ourFileHandle); 
    echo $name_full; 
?> 

我還應該做些什麼來使t他的陣列全球...

+0

真的看起來像你應該使用數據庫而不是文件 – 2012-08-10 04:38:34

+0

你會解釋你的需要更多?通過查看代碼,你所做的事似乎是正確的,爲什麼你需要聲明一個數組爲全局的? – WatsMyName 2012-08-10 04:38:38

+0

@Sabin:becoz如果我不這樣做,我應該在ajax頁面聲明它,每次頁面加載時,它會創建一個新的數組..然後我怎麼能添加內容? – Deepzz 2012-08-10 04:41:07

回答

2

在ajax頁面聲明$ ARR爲,global $arr;,看看這是否工作,但我懷疑這是行不通的,因爲每次頁面加載,數組被重置,爲什麼你不使用這個會議?

+0

沒有..它不工作.. :( – Deepzz 2012-08-10 04:47:19

+0

@Deepthi,是的,我懷疑,而不是將它存儲在數組中,將其存儲在會話中。可行的解決方案。 – WatsMyName 2012-08-10 04:49:01

+0

非常感謝... :) – Deepzz 2012-08-10 04:55:42

2

是的,變量在每個頁面加載後「過期」。如果你需要一些數據請求之間持續下去,你有幾種選擇:

  • 將數據傳遞到客戶端(也許在隱藏的表單字段),並且必須通過GET /他們重新提交它(訪問POST)。這是不好的,因爲用戶很容易操縱這個數據客戶端
  • 將變量存儲在$ _SESSION中,該變量將持續用戶。這很糟糕,因爲如果您擁有多臺服務器,則其他服務器上將無法訪問數據(除非您進行一些花哨的負載平衡以確保客戶端每次都訪問同一臺服務器)
  • 使用「臨時」存儲(內存緩存,Redis的),這是提供給所有服務器
  • 用戶的「持續性」店(MySQL的,蒙戈),這是提供給所有服務器
1

有你列入ajax.php在index.php?如果你已經包含index.php,然後按照「Sabin」的說法。 我不明白你想做什麼。記住,每次你打電話給一個PHP文件,它與以前的PHP文件無關。如果你想在你的網站的全球品種,使用數據庫將更好