将数组转换为 .txt 文件
可能的重复:
将数组转换为 csv
您好,
如何将数组转换为 .txt 文件?
这是我的数组:
Array
(
[OrderList_RetrieveByContactResult] => Array
(
[OrderDetails] => Array
(
[0] => Array
(
[entityId] => 156456
[orderId] => 110631
[orderName] => testing2
[statusTypeId] => 15656
[countryCode] => AU
[orderType] => 2
[invoiceNumber] => 1001
[invoiceDate] => 2010-10-19T00:00:00
[userID_AssignedTo] => 245454
[shippingAmount] => 8.95
[shippingTaxRate] => 0
[shippingAttention] => tttesst
[shippingInstructions] => this a test
[shippingOptionId] => 50161
[discountCodeId] => 0
[discountRate] => 0
[totalOrderAmount] => 143.8
[directDebitTypeId] => 0
[directDebitDays] => 0
[isRecur] =>
[nextInvoiceDate] => 0001-01-01T00:00:00
[endRecurDate] => 0001-01-01T00:00:00
[cycleTypeID] => 1
[createDate] => 2010-10-19T05:40:00
[lastUpdateDate] => 2010-10-19T05:40:00
[deleted] =>
[products] => Array
(
[Product] => Array
(
[productId] => 455
[productCode] =>
[productDescription] => testtest
[units] => 3
[unitPrice] => 44.95
[unitTaxRate] => 0
[totalProductPrice] => 134.85
[productName] => Skin Support Tablets
)
)
[addresses] => Array
(
[Address] => Array
(
[addressTypeID] => 8
[addressLine1] => Cebu
[city] => City
[zipcode] => 6000
[state] => cebu
[countryCode] => PH
)
)
)
[1] => Array
(
[entityId] => 315456
[orderId] => 321321
[orderName] => testing
[statusTypeId] => 3213
[countryCode] => AU
[orderType] => 2
[invoiceNumber] => 1002
[invoiceDate] => 2010-10-19T00:00:00
[userID_AssignedTo] => 11711
[shippingAmount] => 8.95
[shippingTaxRate] => 0
[shippingAttention] =>
[shippingInstructions] =>
[shippingOptionId] => 50161
[discountCodeId] => 0
[discountRate] => 0
[totalOrderAmount] => 408.45
[directDebitTypeId] => 0
[directDebitDays] => 0
[isRecur] =>
[nextInvoiceDate] => 0001-01-01T00:00:00
[endRecurDate] => 0001-01-01T00:00:00
[cycleTypeID] => 1
[createDate] => 2010-10-08T18:40:00
[lastUpdateDate] => 2010-10-19T18:36:00
[deleted] =>
[products] => Array
(
[Product] => Array
(
[productId] => 11564
[productCode] =>
[productDescription] =>
[units] => 10
[unitPrice] => 39.95
[unitTaxRate] => 0
[totalProductPrice] => 399.5
[productName] => Acne Clearing Gel
)
)
[addresses] => Array
(
[Address] => Array
(
[addressTypeID] => 8
[addressLine1] => Cebu City
[city] => Cebu
[zipcode] => 6000
[state] =>
[countryCode] => PH
)
)
)
)
)
)
Possible Duplicate:
Convert array into csv
Hi,
How to convert array into .txt file?
This is my array:
Array
(
[OrderList_RetrieveByContactResult] => Array
(
[OrderDetails] => Array
(
[0] => Array
(
[entityId] => 156456
[orderId] => 110631
[orderName] => testing2
[statusTypeId] => 15656
[countryCode] => AU
[orderType] => 2
[invoiceNumber] => 1001
[invoiceDate] => 2010-10-19T00:00:00
[userID_AssignedTo] => 245454
[shippingAmount] => 8.95
[shippingTaxRate] => 0
[shippingAttention] => tttesst
[shippingInstructions] => this a test
[shippingOptionId] => 50161
[discountCodeId] => 0
[discountRate] => 0
[totalOrderAmount] => 143.8
[directDebitTypeId] => 0
[directDebitDays] => 0
[isRecur] =>
[nextInvoiceDate] => 0001-01-01T00:00:00
[endRecurDate] => 0001-01-01T00:00:00
[cycleTypeID] => 1
[createDate] => 2010-10-19T05:40:00
[lastUpdateDate] => 2010-10-19T05:40:00
[deleted] =>
[products] => Array
(
[Product] => Array
(
[productId] => 455
[productCode] =>
[productDescription] => testtest
[units] => 3
[unitPrice] => 44.95
[unitTaxRate] => 0
[totalProductPrice] => 134.85
[productName] => Skin Support Tablets
)
)
[addresses] => Array
(
[Address] => Array
(
[addressTypeID] => 8
[addressLine1] => Cebu
[city] => City
[zipcode] => 6000
[state] => cebu
[countryCode] => PH
)
)
)
[1] => Array
(
[entityId] => 315456
[orderId] => 321321
[orderName] => testing
[statusTypeId] => 3213
[countryCode] => AU
[orderType] => 2
[invoiceNumber] => 1002
[invoiceDate] => 2010-10-19T00:00:00
[userID_AssignedTo] => 11711
[shippingAmount] => 8.95
[shippingTaxRate] => 0
[shippingAttention] =>
[shippingInstructions] =>
[shippingOptionId] => 50161
[discountCodeId] => 0
[discountRate] => 0
[totalOrderAmount] => 408.45
[directDebitTypeId] => 0
[directDebitDays] => 0
[isRecur] =>
[nextInvoiceDate] => 0001-01-01T00:00:00
[endRecurDate] => 0001-01-01T00:00:00
[cycleTypeID] => 1
[createDate] => 2010-10-08T18:40:00
[lastUpdateDate] => 2010-10-19T18:36:00
[deleted] =>
[products] => Array
(
[Product] => Array
(
[productId] => 11564
[productCode] =>
[productDescription] =>
[units] => 10
[unitPrice] => 39.95
[unitTaxRate] => 0
[totalProductPrice] => 399.5
[productName] => Acne Clearing Gel
)
)
[addresses] => Array
(
[Address] => Array
(
[addressTypeID] => 8
[addressLine1] => Cebu City
[city] => Cebu
[zipcode] => 6000
[state] =>
[countryCode] => PH
)
)
)
)
)
)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您希望它可解析,您可以使用
var_export
- 输出或返回变量的可解析字符串表示形式示例
如果您希望它看起来像您的问题中的那样,您可以将
TRUE
作为第二个参数传递给print_r
:EDIT 您在评论中提到您希望将数组转换为 CSV 文件。这个就比较困难了。您的数组是嵌套的,而 CSV 文件基本上是单个暗淡数组,例如,
相当于 CSV 文件,其中第一行是数组键,第二行是值。
单个暗淡数组通常位于另一个数组内,因此您有一个如下所示的集合:
在这里,您必须首先获取键,然后仅从数组中获取后续行的值,例如
问题是,您的数组嵌套得更深。您会将地址数组放在哪里?唯一可行的方法是遍历数组并仅获取那些包含标量类型的键和值,并对任何嵌套数组进行线性化,例如
必须将其转换为
如果不清楚,这里是一个说明:
< img src="https://i.sstatic.net/ilpiq.png" alt="展平多维数组以在 CSV 文件中使用">
幸运的是,这可以通过迭代器来实现:
上面的代码应该输出所描述的格式。有关示例,请参阅 http://www.ideone.com/I70dD。
要将其写入文件,您可以将其组装为字符串变量,然后一次性将其全部写入 file_put_contents,或者使用文件指针并逐行写入。如果您不
内爆
它而是迭代$flattened
数组,您也可以使用fputcsv
。If you want it to be parseable, you can use
var_export
— Outputs or returns a parsable string representation of a variableExample
If you want it to look like in your question, you pass
TRUE
as the second param toprint_r
:EDIT you mentioned in the comments that you want the array to be transformed to a CSV file. This is more difficult. Your array is nested, while a CSV file is basically a single dim array, e.g.
would be equivalent to a CSV file where the first rows is the array keys and the second row the values.
The single dims arrays are usually inside another array, so you have a collection like this:
Here, you'd have to get the keys first and then fetch only the values from the array for the subsequent lines, e.g.
The problem is, your array is nested even deeper. Where would you put the address array? The only feasible approach would be to go over the array and fetch only those keys and values that contain a scalar type and linearize any nested arrays, e.g.
has to be turned into
In case this isnt clear, here is an illustration what goes where:
Luckily, this can be achieved with Iterators:
The above code should output the described format. See http://www.ideone.com/I70dD for an example.
To write this to a file, you can either assemble this to a string variable and then
file_put_contents
it all at once or you use a filepointer and write it line by line. If you dontimplode
it but iterate over the$flattened
array, you can also usefputcsv
.如果要将变量保存在文本文件中,可以使用
serialize( )
/unserialize()
< /a> 的功能:并恢复它...
If you want to save a variable in a text file, you could use the
serialize()
/unserialize()
functions for that:And restore it...
也许您想要的是 fputcsv ?
Maybe what you want is fputcsv ?