duan20081202 2009-11-20 08:35
浏览 48
已采纳

从Array(var_dump)到我的数组?

I Make a

echo '<pre>';
echo var_dump($arrayX);
echo '</pre>'

I got the result:

array(6) {
  [0]=>
  string(9) "AAA"
  [1]=>
  string(13) "BBB"
  [2]=>
  string(8) "CCC"
  [3]=>
  string(8) "DDD"
  [4]=>
  string(8) "EEE"
  [5]=>
  string(13) "FFF"
}

How Can I make It to A New array What I want is to get arrayX in this format :

array('AAA', 'BBB' , 'CCC','DDD', 'EEE',  'FFF');

  $myarray = array('AAA', 'BBB' , 'CCC','DDD', 'EEE',  'FFF');
  • 写回答

5条回答 默认 最新

  • dongtanlin0765 2009-11-20 09:15
    关注

    If you want a copy of it then

    $a = $arrayX;
    

    However if you have to convert it to some string format then the better way of doing it would be this

    $dump = var_export($a,true);
    eval('$b = ' . $dump . ';');
    

    Or better yet

    $s = serialize($a);
    $c = unserialize($s);
    

    If that does not do it then here is how to parse the vardump format in question

    function parseValue($value) {
        return substr(preg_replace('/\s*[a-z]+\([0-9]+\)\s+"(.*)/','\\1',$value),0,-2);
    }
    function parseIndex($index) {
        return preg_replace('/[^[]*\[([0-9]+)\].*/','\\1',$index);
    }
    function parseVardump($dump) {
    
    $lines = explode("
    ",$dump);
    
    foreach ($lines as $line) {
        switch (true) {
        case preg_match('/array\([0-9]+\) {/',$line) :
        break;
        case preg_match('/\[[0-9]+\]=>/',$line) :
            // end previous value
            if (isset($index)) {
            $ar[$index] = parseValue($value);
            }
            $index = parseIndex($line);
            $value = '';
        break;
        case preg_match('/}$/',$line) :
            if (isset($index)) {
            $ar[$index] = parseValue($value);
            }
        break;
        default:
            $value .= $line . "
    ";
        break;
        }
    }
    return $ar;
    }
    
    $a = array("AAA
    ", 'BBB' , 'CCC','DDD', 'EEE',  'FFF');
    
    ob_start();
    var_dump($a);
    $dump = ob_get_contents();
    ob_end_clean();
    
    $ar = parseVardump($dump);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?