我無法找到一種輕鬆創建新文件的方式,將它視爲一個ini文件(不是php.ini或類似的...爲每個用戶提供一個單獨的ini文件),並使用PHP創建/刪除值。 PHP似乎沒有提供創建ini文件和讀取/寫入/刪除值的簡單方法。到目前爲止,這只是「閱讀」 - 沒有關於創建條目或操作鍵/值。創建ini文件,在PHP中寫入值
回答
發現以下從PHP文件的註釋代碼片段:
function write_ini_file($assoc_arr, $path, $has_sections=FALSE) {
$content = "";
if ($has_sections) {
foreach ($assoc_arr as $key=>$elem) {
$content .= "[".$key."]\n";
foreach ($elem as $key2=>$elem2) {
if(is_array($elem2))
{
for($i=0;$i<count($elem2);$i++)
{
$content .= $key2."[] = \"".$elem2[$i]."\"\n";
}
}
else if($elem2=="") $content .= $key2." = \n";
else $content .= $key2." = \"".$elem2."\"\n";
}
}
}
else {
foreach ($assoc_arr as $key=>$elem) {
if(is_array($elem))
{
for($i=0;$i<count($elem);$i++)
{
$content .= $key."[] = \"".$elem[$i]."\"\n";
}
}
else if($elem=="") $content .= $key." = \n";
else $content .= $key." = \"".$elem."\"\n";
}
}
if (!$handle = fopen($path, 'w')) {
return false;
}
$success = fwrite($handle, $content);
fclose($handle);
return $success;
}
用法:
$sampleData = array(
'first' => array(
'first-1' => 1,
'first-2' => 2,
'first-3' => 3,
'first-4' => 4,
'first-5' => 5,
),
'second' => array(
'second-1' => 1,
'second-2' => 2,
'second-3' => 3,
'second-4' => 4,
'second-5' => 5,
));
write_ini_file($sampleData, './data.ini', true);
祝你好運!
在這個代碼部分在if(!fwrite($ handle,$ content)){'之後,應該關閉文件句柄。 – 2010-04-11 22:42:33
當不使用分區時,代碼有錯誤,變量$ key2應該是$ key – kjetilh 2012-06-22 11:07:40
這不是官方解決方案,只是您的註釋不是堆棧溢出的正式評論。 – 2013-05-07 20:42:27
我不能保證它如何運作,但有實現的parse_ini_file()
相反一些建議(即write_ini_file
,這是不是一個標準的PHP函數)爲parse_ini_file
的文檔頁面上。
您可以使用write_ini_file
將值發送到文件,parse_ini_file
閱讀它們放回 - 修改關聯數組parse_ini_file
回報,然後用write_ini_file
寫入修改後的數組回到文件。
這是否適合您?
:
else {
foreach ($assoc_arr as $key=>$elem) {
if(is_array($elem))
{
for($i=0;$i<count($elem);$i++)
{
$content .= $key2."[] = \"".$elem[$i]."\"\n";
}
}
else if($elem=="") $content .= $key2." = \n";
else $content .= $key2." = \"".$elem."\"\n";
}
}
$ KEY2必須由$鍵所取代,或者你會在你的.ini
+1,是的,你是對的 – 2014-02-09 12:52:14
PEAR找到空鍵有兩個(單元測試)包裏面做的任務你是嚮往:
- Config_Lite - 理想的,如果你只是想
.ini
文件 - Config - 也讀
.php
和.xml
文件
我寧願使用經過充分測試的代碼比寫我自己。
+1爲測試/支持的解決方案 – 2011-11-11 20:05:30
我用這個和它似乎工作
function listINIRecursive($array_name, $indent = 0)
{
global $str;
foreach ($array_name as $k => $v)
{
if (is_array($v))
{
for ($i=0; $i < $indent * 5; $i++){ $str.= " "; }
$str.= " [$k] \r\n";
listINIRecursive($v, $indent + 1);
}
else
{
for ($i=0; $i < $indent * 5; $i++){ $str.= " "; }
$str.= "$k = $v \r\n";
}
}
}
返回寫入基於上述答案的.ini文件
如果$ array_name裏面包含一個多維數組,你的代碼段將失敗。也就是說,如果父數組的深度爲3或更大。 – Tivie 2012-03-02 00:20:50
我寫了這個類,可能是有用的文本。對於PHP 5.3,但可以輕鬆適應以前的版本。
當你「每用戶」說class Utils
{
public static function write_ini_file($assoc_arr, $path, $has_sections)
{
$content = '';
if (!$handle = fopen($path, 'w'))
return FALSE;
self::_write_ini_file_r($content, $assoc_arr, $has_sections);
if (!fwrite($handle, $content))
return FALSE;
fclose($handle);
return TRUE;
}
private static function _write_ini_file_r(&$content, $assoc_arr, $has_sections)
{
foreach ($assoc_arr as $key => $val) {
if (is_array($val)) {
if($has_sections) {
$content .= "[$key]\n";
self::_write_ini_file_r(&$content, $val, false);
} else {
foreach($val as $iKey => $iVal) {
if (is_int($iKey))
$content .= $key ."[] = $iVal\n";
else
$content .= $key ."[$iKey] = $iVal\n";
}
}
} else {
$content .= "$key = $val\n";
}
}
}
}
- 1. PHP寫入.ini文件
- 2. 在PHP中創建/寫入XML文件?
- 3. 創建ini文件
- 4. PHP寫入.ini文件異常
- 5. 用PHP創建+寫入文本文件
- 6. 寫入INI文件中的一段
- 7. INI文件在PHP
- 8. 添加引號.ini文件中值PHP
- 9. 讀/寫「INI」文件
- 10. 在Qt中創建/寫入新文件
- 11. c#如何寫入ini文件
- 12. 內存INI文件寫入器
- 13. 創建和寫入文件
- 14. 在析構函數中創建/寫入PHP文件
- 15. 從PHP寫入INI文件並保留#註釋行
- 16. Python寫入文件創建空文件
- 17. 創建文件並寫入文件
- 18. 在MIPS上創建並寫入文件
- 19. 在PHP中解析ini文件時如何寫入數組名稱?
- 20. 如何在運行中將數據寫入ini文件
- 21. 如何在INI文件中寫入時刪除空格 - Python
- 22. 無法在Windows 7中寫入INI文件64位
- 23. 如何將PHP代碼寫入由PHP創建的文件?
- 24. 讀取/寫入文件,然後在Fortran中創建.exe文件
- 25. 如何使用PHP創建寫入現有文本文件?
- 26. 如何在.ini文件中創建註冊表項
- 27. 在一個ini文件中創建一個數組
- 28. 使用ini文件在zend中創建表格
- 29. 如何在java中通過擴展名(.ini)創建文件?
- 30. 在java中創建文本並將文本寫入文件
,你是什麼意思?每次使用PHP應用程序? – 2009-08-12 20:02:43
爲什麼你需要每個用戶的.ini文件?不應該將這種類型的信息存儲在數據庫中? – Omnipresent 2009-08-12 20:09:23
好吧,我的意思是我想爲同一個PHP應用程序的每個用戶設置一個ini文件。例如,chad.ini,jeff.ini,mary.ini,anne.ini – netrox 2009-08-12 20:10:55