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



我正在尝试在plain-text(而非二进制)中写入数组或对象,但是每当我循环逐渐绕过数组并查看我收到的文件,而是。

$this->user$this->temp_files['in_file_name']先前传递到功能中。

$user_array = (array)$this->user;
$data = "";
foreach ($user_array as $key => $value) {
    $data .= "$key $valuen";
}
file_put_contents($this->temp_files['in_file_name'], $data);

如果我只是将字符串传递到 $data中,它会以普通文本的形式写入文件,但是当我循环循环到对象或数组时,我会收到二进制。有没有办法在文件中获取此数组的普通文本版本?

$this->user是一个数据库行,作为来自Ion_Auth的对象:

$this->user =$this->ion_auth->user($this->user_id)->row();

这是文件输出的一部分

4461 7465 2054 7565 7364 6179 204F 6374 6F62 6572 2033 3033 302C 2032 3032 3031 3269 6420 320A 6970 5F61 6461 6461 6464 7265 7265 7373 2073 207F 0000010A 656656656ER 7573 65726EY26EEM 7573 6ER 2062 6F73 7765 6C6C 0A70 6173 7377 6F72 6420 6539 3936 3630 6665 30393535 6663 3862 3431 6639 3838 3066 3639 6131 6664 6635

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

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)

如果我在文件上执行file_get_contents,则可以正确回音,但我希望文件存储为普通文本。

解码已发布的十六进制字节显示正确的数据。因此,我会猜测:PHP完美地编写了文件,但是IP地址(127.0.0.1)中的原始字节正在使您使用的OS或编辑器打开文件混淆,以为这不是一个文本文件,因此它将其显示在HEX编辑器视图中。尝试在其他编辑器中打开文件,或将'ip_address'字段保存为文本。

相关内容

  • 没有找到相关文章