变量的可分析字符串表示法
例子
file_put_contents('array.txt', var_export($array, TRUE));
如果你想让它看起来像你的问题,你就通过了TRUE
作为第二个参数print_r
:
file_put_contents('array.txt', print_r($array, TRUE));
编辑您在注释中提到希望将数组转换为csv文件。这更困难。您的数组是嵌套的,而csv文件基本上是单个dim数组,例如
array('k1' => 'v1', 'k2' => 'v2', ... , 'kn' => 'vn');
相当于一个csv文件,其中第一行是数组键,第二行是值。
k1; k2; ...; kn
v1; v2; ...; vn
单个DIMS阵列通常位于另一个阵列内,因此您有如下集合:
array(
array('k1' => 'v1', 'k2' => 'v2', ... , 'kn' => 'vn'),
array('k1' => 'v1', 'k2' => 'v2', ... , 'kn' => 'vn')
);
在这里,您必须先获取键,然后只从数组中获取后续行的值,例如。
k1; k2; ...; kn
v1; v2; ...; vn
v1; v2; ...; vn
问题是,您的数组嵌套得更深。你会把它放在哪里?地址数组?唯一可行的方法是遍历数组,只获取包含标量类型的键和值,并线性化任何嵌套数组,例如。
array(
array('k1' => 'v1', 'k2' => 'v2', ... , 'kn' => array( 'skn' => 'svn' ) ),
array('k1' => 'v1', 'k2' => 'v2', ... , 'kn' => array( 'skn' => 'svn' ) ),
);
必须变成
k1; k2; ...; skn
v1; v2; ...; svn
v1; v2; ...; svn
如果这不清楚,请举例说明:
幸运的是,这可以通过迭代器实现:
$orderDetails = $array['OrderList_RetrieveByContactResult']['OrderDetails'];
foreach( $orderDetails as $key => $details ) {
$iterator = new RecursiveIteratorIterator(
new RecursiveArrayIterator($details));
if($key === 0) {
$keys = array();
foreach($iterator as $k => $v) {
$keys[] = $k;
}
echo implode(';', $keys);
}
$values = array();
foreach($iterator as $val) {
$values[] = $val;
}
echo PHP_EOL, implode(';', $values);
}
上面的代码应该输出所描述的格式。见http://www.ideone.com/I70dD举个例子。
要将其写入文件,可以将其组装为字符串变量,然后file_put_contents
或者使用一个文件指针,一行一行地写。如果你不implode
但重复$flattened
数组,也可以使用fputcsv
.