类从文件加载多维数组



我想创建一个单例类,从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;
        }

文本文件包含:

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怎么做呢?

如有任何帮助,不胜感激

如果您的文本文件简单如所示,那么您可以使用这个技巧:

$string = "array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g')";
$string = str_replace(['array(', ')', "'"], ['[',']', '"'], $string);
var_dump(json_decode($string));

相关内容

  • 没有找到相关文章

最新更新