【问题标题】:How to fetch saved array from a file & access it like an array如何从文件中获取保存的数组并像数组一样访问它
【发布时间】:2016-09-24 08:21:22
【问题描述】:

我有一个文件,我在其中以数组格式保存数据,稍后我想将这些数据读入一个变量,这个变量的行为必须像一个数组。

假设我的电脑上有一个文件:C:/test.txt,它包含一个数组:

Array
(
    [first_name] => John
    [last_name] => Doe
    [email] => johndoe@gmail.com
)

现在我正在使用以下方法获取这些数据:

$myfile = fopen("C:/test.txt", "r");
$test = fread($myfile,filesize("C:/test.txt"));

现在,当我打印 $test 时,它会显示类似数组的数据,但是当我检查此变量的数据类型时,它会显示 String

我还使用类型转换将此变量转换为数组:

$test1 = (Array) $test;

但是当试图从 $test1 获取任何索引时,它会显示非法字符串错误。

那么谁能帮帮我。

【问题讨论】:

  • 转换后是否尝试获取数据类型???
  • 是的,我试过了,转换后将数据类型显示为数组,但仍然无法从新变量中获取任何索引。
  • 你能把它保存为 JSON 格式吗? {"first_name": "John", "last_name": "Doe", "email": "johndoe@gmail.com"}

标签: php arrays json file


【解决方案1】:

C:/test.php

<?php
return array(
    'first_name' => null,
    'last_name' => null,
    'email' => 'new',
);

另一个文件:

<?php
$array = inclde('C:/test.php');

或者将json保存到文件C:/test.json

{"first_name":null,"last_name":null,"email":"new"}

在另一个文件中:

<?php
$json = file_get_contents('C:/test.json');
$array = json_decode($json, true);

【讨论】:

  • 感谢您的回答,但我无法包含文件,因为将存储 100 多个文件并稍后获取。
  • 你可以将你的100个文件保存为json格式,然后$array = json_decode(file_get_contents('C:/pathToFile.json'));
  • @Ankit 几乎是你的代码 - $myfile = "C:/test.txt"; $array = inclde($myfile);
  • @VladimirKovpak Yeh,当我尝试使用 json_decode 它工作正常。谢谢
【解决方案2】:

试试这个

    $file = "C:/test.txt";
    $document = fopen($file,'r');
    $contents = fread($document, filesize($file));
    fclose($document);

这会给你一个数组 $contents

    print_r($contents);

【讨论】:

    【解决方案3】:

    这样做:

    // $myarray is the array
    file_put_contents('my_file', serialize($myarray));
    
    // Later ...
    $array = unserialize(file_get_contents('my_file'));
    

    你可以猜到serializeunserialize 做了什么。但请阅读文档以了解更多具体信息。

    @VladimirKovpak 的答案也可以,但对于简单的数组。使用序列化,您几乎可以保存任何对象并将其取回。

    如果您需要对序列化过程进行更多控制,请查看 docs 中的魔术方法 __sleep__wakeup

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 2015-02-20
      相关资源
      最近更新 更多