永久将元素推到数组的末尾

3

我该如何做以下操作:

$x = array();
$x[] = '1';
$x[] = '2';

但是要将它永久地添加到数组中吗?

我有一个想法,我们可以尝试做到以下几点:

  • 创建一个新的 .txt 文件;
  • 例如写入:1~2~3
  • 使用 file_get_contents 将其应用到变量 $y 中;
  • 应用 explode()
  • 现在我们可以这样做:

x[] = y[0]; x[] = y[1]; x[] = y[2];

  • 将其添加到 foreach 循环中;
  • 然后以某种方式使用 fwrite() 或 file_put_contents() 等方法,将要添加到数组中的变量添加到 .txt 文件中,那么我们该使用 fwrite 或其他方法来添加到 .txt 文件中呢?

但我想知道这是否是最好的解决方法?


你是说你想通过编程方式修改 .php 文件,使 $x = array('1','2'); - user5051310
是的,例如如果有人在使用GET时在URL中输入?v=30,它将安全地永久地将其添加到数组末尾。 - John123
2个回答

1

使用serialize函数对你的数组进行序列化,将其转换为一个字符串,然后你就可以将它写入文件了。

file_put_contents("myfile",serialize($x));

并使用unserialize将字符串转换回数组。

$x = unserialize(file_get_contents("myfile"));

如果您只需要将值附加到数组的末尾,可以使用带有FILE_APPEND选项的file_put_contents,这比将整个数组读入内存并将其写回磁盘要快。
file_put_contents("myfile", "1\n", FILE_APPEND);
file_put_contents("myfile", "2\n", FILE_APPEND);

使用file读取数组(默认情况下使用\n作为分隔符)。
$x = file("myfile");

是的,但我该如何将新字符串/值附加/推送到数组的末尾? - John123
@John123 和 $x[] = 'newvalue'; 的使用方式相同。 - FuzzyTree
那么在我们反序列化后添加新值,然后再进行序列化? - John123
@John123 是的,如果你想将更新后的数组再次写入磁盘,你可以使用 serialize - FuzzyTree
为什么在你所做的新编辑中,serialize 没有出现在任何地方? - John123
显示剩余4条评论

0

要永久保存任何东西,您需要某种持久性存储。文本文件可以使用,数据库甚至可以使用cookie代码,具体取决于您要保存的内容。

file_put_contents()

MySQL


是的,但那是否是最好的方式?难道没有直接在同一PHP文件中完成的方法吗? - John123
不太可能。将其存储在文本文件或数据库中是“最佳方式”,在大多数情况下也是唯一的方式。 - Chris
我建议使用数据库,但这取决于您要保存什么,为什么要保存以及要保存多少数据。 - Chris
没错,会有很多数组,但我并不在意。哈哈,一旦数量变得巨大,我就会转移到数据库。 - John123
那么请看@FuzzyTree的回答。尽管添加数据库不算太麻烦。 - Chris
是的,我经常使用数据库,这就是为什么我试图避免它的原因。 - John123

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接