将PHP数组写入文件会生成二进制而不是纯文本

将PHP数组写入文件会生成二进制而不是纯文本,php,Php,我试图用纯文本(不是二进制)将数组或对象写入文件,但是每当我循环数组并查看文件时,我接收的是二进制 $this->user和$this->temp\u文件['in\u file\u name']被传递到函数中 $user_array = (array)$this->user; $data = ""; foreach ($user_array as $key => $value) { $data .= "$key $value\n"; } file_put_contents

我试图用纯文本(不是二进制)将数组或对象写入文件,但是每当我循环数组并查看文件时,我接收的是二进制

$this->user
$this->temp\u文件['in\u file\u name']
被传递到函数中

$user_array = (array)$this->user;
$data = "";

foreach ($user_array as $key => $value) {
    $data .= "$key $value\n";
}

file_put_contents($this->temp_files['in_file_name'], $data);
如果我只是将一个字符串传递到
$data
中,它会以纯文本的形式写入文件,但是当我循环对象或数组时,我会收到二进制文件。有没有办法在文件中获取此数组的纯文本版本

$this->user
是一个数据库行,作为
Ion\u Auth
中的对象,由以下人员调用:

$this->user =$this->ion_auth->user($this->user_id)->row();
下面是文件输出的一部分

4461 7465 2054 7565 7364 6179 204f 6374 6f62 6572 2033 302c 2032 3031 3269 6420 320a 6970 5f61 6464 7265 7373 207f 0000 010a 7573 6572 6e61 6d65 2062 7261 6e64 6f6e 2062 6f73 7765 6c6c 0a70 6173 7377 6f72 6420 6539 3630 6665 3039 3535 6663 3862 3431 6639 3838 3066 3639 6131 6664 6635

用户数组的var_转储是:(出于数据安全原因,我更改了一些值)


如果我对文件执行
文件\u获取\u内容
,它可以正确地回显,但我希望该文件以纯文本形式存储。

解码您发布的十六进制字节会显示正确的数据。所以我猜:PHP写文件写得很完美,但是IP地址(127.0.0.1)中的原始空字节让用来打开文件的操作系统或编辑器感到困惑,认为这不是文本文件,所以它在十六进制编辑器视图中为您显示。尝试在其他编辑器中打开文件,或将
'ip\u address'
字段保存为文本。

如果不知道
$this->user
中的内容,很难说清楚。我注意到您将其转换为数组,但它最初是什么?您可以发布“二进制”文件中的示例内容吗?您认为“二进制”是什么?甚至“纯文本文件”都是二进制的,因为计算机中的一切都是二进制的。你能
var\u dump($user\u array)
这样我就可以确定你在写什么
$user\u array=(array)$this->user你能转换这样一个对象吗?Zend_Framework有一个函数toArray(),可以将一个对象转换为数组,但我不认为
(array)$this->object将转换对象。我可能错了,我想你搞定了,在Sublime中打开显示为二进制,但在Textmate中打开显示正确的数据。有趣!
array (size=22)
  'id' => string '2' (length=1)
  'ip_address' => string '��' (length=4)
  'username' => string 'brandon' (length=15)
  'password' => string 'changed' (length=40)
  'salt' => null
  'email' => string 'brandon@changed.net' (length=27)
  'activation_code' => null
  'forgotten_password_code' => null
  'forgotten_password_time' => null
  'remember_code' => string 'changed' (length=40)
  'created_on' => string '1337702147' (length=10)
  'last_login' => string '1351607850' (length=10)
  'active' => string '1' (length=1)
  'first_name' => string 'Brandon' (length=7)
  'last_name' => string 'changed' (length=7)
  'company' => string 'changed' (length=17)
  'phone' => string '804-814-changed' (length=12)
  'store' => string 'mechanicsville' (length=14)
  'delivery' => string '1' (length=1)
  'receiveEmails' => string '1' (length=1)
  'customerType' => string 'business' (length=8)
  'user_id' => string '2' (length=1)