我想创建一个单例类,从txt文件中读取多维数组,并展平在php中检索的数组。
这是我到目前为止所尝试的:
class singleton {
protected static $instance = null;
public static function getInstance() {
if (!isset(static::$instance)) {
static::$instance = new static;
}
return static::$instance;
}
public static function flattenArray($array) {
$return = array();
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach ($iterator as $value) {
$return[] = $value;
}
return $return;
}
public static function loadFile($path) {
$file_handle = fopen($path, "r");
while (!feof($file_handle)) {
$line = fgets($file_handle);
$rawarray[] = $line;
}
$flattedarray = self::flattenArray($rawarray);
fclose($file_handle);
return $flattedarray;
}
使用包含以下内容的txt文件
array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g')
我用:
运行课程include 'singleton.php';
$singleton = singleton::getInstance();
$flattedarray = $singleton->loadFile("file.txt");
echo '<pre>';
print_r($flattedarray);
echo'</pre>';
我得到了结果:
Array
(
[0] => array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g')
)
在txt文件中找到的是相同的数组。
如何在不使用eval的情况下完成?
任何帮助将不胜感激
答案 0 :(得分:0)
如果您的文本文件显示简单,那么您可以使用此技巧:
$string = "array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g')";
$string = str_replace(['array(', ')', "'"], ['[',']', '"'], $string);
var_dump(json_decode($string));