2009-06-27 20 views
11

ile içeriğe koyuyorum İçeriği dosyaya koymak için file_put_contents($file, $data); işlevini kullanıyorum, çünkü bu dosyalar oturum adıyla anında oluşturuldu, $ veri çok boyutlu bir dizidir, ben dizi eklediğimde ince fakat dosyada hiç içerikleri kelime dizi dışında kaydedilmezdosya dizini

ne yapmam veya verileri otomatik (dizi) dosyası oluşturur ve kaydeder başka işlevi yoktur gerekir?

Teşekkür ederiz.

cevap

22

Dosyayı okuduktan sonra writting üzerine dizi ve unserialize()serialize() istiyoruz.

$array = array('foo' => 'bar'); 
file_put_contents('foo.txt', serialize($array)); 
$array = unserialize(file_get_contents('foo.txt'))); 

Oh, ve gerçekten dizinizi echo'd ama echo array('foo' => 'bar'); hep Array yazdırır şimdi nasıl yok.

+0

Yanlış terimi kullandığım için üzgünüm, ama dizi – Shishant

+0

görüntülemek için print_r kullanıyorum sadece bir not, eksik a) ikinci satırında – Uberfuzzy

+0

thx! onu düzeltti. :-) –

1

Diziyi serialize dizisine ekleyebilir ve ardından dosyayı tekrar yükledikten sonra kullanabilirsiniz. Ayrıca diziyi json_encode ile JSON nesnesi olarak kodlayabilir ve bir .json dosyasına yazabilirsiniz. Eğer okunabilir olmasını istiyorsanız

4

, bunu yapabilirsiniz:

<?php 
ob_start(); 
print_r($data); 
$textualRepresentation = ob_get_contents(); 
ob_end_clean(); 

file_put_contents($file, $textualRepresentation); 
?> 
+4

$ textualRepresentation = print_r ($ veri, true); Sadece iyi olur :-) –

+0

Haha ... bunu bilmiyordum. Teşekkürler :) –

0

Dizinin her üyesini geçebilen, kendisinin bir dizi olup olmadığını kontrol eden ve bu üyede tekrar işlevini çağıran ve yalnızca içeriğini yazdırmıyorsanız, yinelemeli bir işlev ayarlayabilirsiniz. Şunun gibi: serialize iyi bir seçenektir kullanarak, en iyi yanıt devletler olarak

$contents = var_export($array, true); 

file_put_contents('foo.txt', "<?php\n return {$contents};\n ?>"); 
// and then use something like this to get it: 
$new_array = require('foo.txt'); 
1

Definetelly sen var_export işlevini kullanabilirsiniz. Ancak, dizinin her bir öğesinden sonra diziyi PHP_EOL kullanarak saklayabilir ve diziyi almak için file komutunu kullanabilirsiniz.

function file_put_array($path, $contents) 
{ 
    if (is_array($contents)) 
    { 
     foreach ($contents as $item) 
      $str .= $item.PHP_EOL; 
     file_put_contents($path, $str); 
     return true; 
    } 
    return false; 
} 

Ve Retreive içeriği:

$contents = file($path, FILE_IGNORE_NEW_LINES); 
0

:

function file_put_contents_deep($file, $data) { 
    if (is_array($data) { 
    foreach ($data as $item) { 
     if (is_array($item) { 
     file_put_contents_deep($file, $item); 
     else { 
     file_put_contents($file, $item); 
     } 
    } 
    } else { 
    file_put_contents($file, $data); 
    } 
}