2016-10-02 61 views
0

我有一個函數,應該將數組保存到我給它的文件,但每個數組變量應該是製表符分隔......在這一點上,我有該函數,但它沒有創建任何文件,也沒有寫任何東西給它...另外由於某種原因,當我嘗試從另一個頁面給一個數組時,它給了我一個未定義的索引錯誤,即使我在這兩個頁面上啓動了一個會話..can你幫忙要麼太保存一個數組到一個選項卡分隔文件php

function saveorder($file,$arr){ 
@ $fp = fopen($file, 'w'); 

    flock($fp, LOCK_EX); 

    if (!$fp) { 
     echo "<p>Your order could not be processed at this time.</p>"; 
    } 
    else { 
     fwrite($fp, _SESSION); 
     flock($fp, LOCK_UN); 
     fclose($fp); 

     echo("<p>Order written to $file file.</p>"); 
    }  

} 
+0

您正在積極用'@'符號壓制錯誤。千萬不要這樣做,並問「爲什麼這不起作用?」。這就像是在忙着PHP,然後問我們什麼是錯的,而PHP可能試圖告訴你。 –

+0

你是對的... –

回答

0

不知道什麼是_SESSION($ _SESSION也許?),不知道你想怎麼寫你的陣列,但此代碼的工作對我來說:

$b = array('test' => 'result', 'another' => 'other'); 
saveorder('test.txt', $b); 
function saveorder($file,$arr){ 
    @ $fp = fopen($file, 'w'); 

    flock($fp, LOCK_EX); 
    $string = ''; 
    foreach($arr as $key => $result) 
     $string .= "$key: $result \n"; 

    if (!$fp) { 
     echo "<p>Your order could not be processed at this time.</p>"; 
    }else{ 
     fwrite($fp, $string); 
     flock($fp, LOCK_UN); 
     fclose($fp); 

     echo("<p>Order written to $file file.</p>"); 
    }  
} 

fwrite的第二個參數必須是一個字符串,所以你格式化數組作爲字符串但是請你

編輯:

如果數組是多維的,你可以使用這個功能上this link

如發現
$string = implode("&",array_map(function($a) {return implode("~",$a);},$arr)); 
+0

如果數組是2維關聯數組怎麼辦 –

+0

重要的是你把它變成一個字符串,我發現這個:http://stackoverflow.com/questions/12309047/multidimensional-array-這比我要採取的方法要好得多,要編輯來使用它。 – Aschab

相關問題