php调用数组中的字符串创建空数组?

时间:2016-03-10 02:47:16

标签: arrays string insert

目前我有这个:

<?php
$fn = "file.txt";
$file = file_get_contents("./$fn");
$array = array($file);
?>

文本文件中的最新例子:

array(1,4,3,2),array(3,2,1,2),array(5,6,7,8)

然而,当我打印数组甚至sizeof($ array)时,它是空的。什么交易?

1 个答案:

答案 0 :(得分:0)

您的文件内容是纯文本而不是数组数据结构。您必须自己解析内容。这是一种方法:

$file_content = "array(1,4,3,2),array(3,2,1,2),array(5,6,7,8)";

$matches = [];
$arrays = [];
if (preg_match_all('~array\(((?:(?:\d+),?)*)\),?~', $file_content, $matches)) {
    $arrays = array_map(function ($array) { return explode(',', $array); }, $matches[1]);
}

$arrays现在包含您期望的数组,您可以使用count()来检查其大小。

如果你知道你的文件总是包含数组,那么另一种方法就是使用eval。

另一种方法

eval('$arrays2 = [' . $file_content . '];');

现在$arrays2包含相同的数组。有一个微妙的区别。前一种方法不会将值转换为整数,而eval也会这样。

警告:如果100%确定您知道该功能的内容,则仅使用eval()。另请注意,这种方法会因糟糕的数据而失败,而前者则会更有弹性。