我有一个包含数组列表的文本文件:
'1920s' => array('20s','twenties')
'1930s' => array('30s','thirties')
'1940s' => array('40s','forties')
'1950s' => array('50s','fifties')
我想将其导入为数组数组,如下所示:
Array
(
[1920s] => Array
(
[0] => 20s
[1] => twenties
)
[1930s] => Array
(
[0] => 30s
[1] => thirties
)
[1940s] => Array
(
[0] => 40s
[1] => forties
)
[1950s] => Array
(
[0] => 50s
[1] => fifties
)
)
我导入文件:
$decadesFile = file_get_contents('/Users/derwood/capsule/decades.txt');
$decades = explode("\r",$decadesFile);
但我得到了一系列文字:
Array
(
[0] => '1920s' => array('20s','twenties')
[1] => '1920s' => array('20s','twenties')
[2] => '1940s' => array('40s','forties')
[3] => '1950s' => array('50s','fifties')
我应该使用除“file_get_contents”和“explode”之外的其他组合吗?
编辑:我确实阅读了列出的答案,但文本文件是由FMP数据库生成的,而不是print_r输出,所以由于我的经验有限,我认为问题不重复。但是,链接的问题和这里的答案都非常有助于说明它们的相关性。谢谢。
答案 0 :(得分:1)
我确信每行的正则表达式可能是一个更好的解决方案但是为了使用explode并假设文件的内容在$ file中
$lines = explode("\n",$file);
foreach($lines as &$line){
$line = explode("'",$line);
$output[$line[1]][0] = $line[3];
$output[$line[1]][1] = $line[5];
}
unset($lines);
var_dump($output);
答案 1 :(得分:0)
print_r函数不是保存数组的好函数。使用json_encode或var_export。
请参阅:Recreate original PHP array from print_r output
的print_r_reverse函数String test = getIntent().getExtras().getString("test");
答案 2 :(得分:0)
您在编程术语中所谈论的是“数据序列化”
https://en.m.wikipedia.org/wiki/Serialization
大多数成熟的编程语言提供了序列化数据类型的方法,以便可以存储它们(文件,内存,缓存服务器等),并在以后甚至在不同的服务器上重新创建。
你应该使用php的serialize方法将数据保存到文件中并反序列化以将数据带回范围
http://php.net/manual/en/function.serialize.php http://php.net/manual/en/function.unserialize.php
您也可以使用json,但与使用PHP的内置序列化引擎相比,它可以做的限制