【问题标题】:Get arrays from a file then loop it从文件中获取数组然后循环它
【发布时间】:2012-11-29 12:46:03
【问题描述】:

尝试从...之类的文件中获取数组

data.txt

Array
(
    [0] => 288
    [1] => 287
    [2] => 173
)

my.php

$data = file('data.txt');

foreach ($data as $id) {
    echo $id." - ";
}

为什么它回显所有数组?比如data.txt

为什么不像 288 - 287 - 173 那样回显?

已关闭:我现在使用 JSON

【问题讨论】:

  • 您的data.txt 文件是否真的包含print_r 的结果?
  • 是的 :( 我该怎么做?
  • @l2aelba 您可以将数据写入serialize 格式。当您读取数据时,然后unserialize
  • 如何将数据转储到 data.txt 文件中?为什么是这种格式?有什么具体原因吗?
  • foreach 函数失败?还是什么?

标签: php arrays file get


【解决方案1】:

保存数据时,使用serialize获取字符串表示:

$str = serialize($arr);

然后您可以使用unserialize 来解码您的数组:

$arr = unserialize(file(data.txt));

【讨论】:

  • +1,顺便说一句,我会使用json_encode/json_decode,因为保存的数据足够灵活,可以与其他语言一起使用。
  • @PLB 我考虑过这一点,但json_encode 对于数字、字符串文字来说已经足够好了,但对于更复杂的数据类型却失败了。
  • 失败是什么意思?
  • @l2aelba 它在大多数情况下都可以工作,但 Asad 在某些时候是正确的,一些数据可能会丢失。但是对于简单的数据,我建议您使用 json。
  • @l2aelba 随便你的船 :) 请记住,你的数组中只能使用字符串和数字数据类型。
【解决方案2】:

您的方法将 data.txt 中的数据作为字符串加载,php 不会将其解析为代码。试试

$data = eval(file(data.txt));

在此处查看有关 eval 的更多信息:PHP manual on eval

另请注意,data.txt 中的语法无效。你想要:

array(288, 287, 173);

PHP 会根据需要自动创建索引。

第二点,这可能不是最好的方法。不知道你在这里的目标是什么,但是在你的 php 文件中设置数组不是更好吗?

【讨论】:

  • eval 在 txt 文件中...真的吗?
  • 如果我的语法看起来像我发布的那样?
猜你喜欢
  • 2020-03-27
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 1970-01-01
  • 2019-08-04
  • 2013-01-29
  • 1970-01-01
  • 2013-08-16
相关资源
最近更新 更多