How to create an array from output of var_dump in PHP?

前端 未结 6 1949
谎友^
谎友^ 2021-01-13 06:53

How can I parse the output of var_dump in PHP to create an array?

相关标签:
6条回答
  • 2021-01-13 07:30

    You can't. var_dump just outputs text but doesn't return anything.

    0 讨论(0)
  • 2021-01-13 07:30

    Perhaps you are trying to convert an object to an array? http://www.phpro.org/examples/Convert-Object-To-Array-With-PHP.html

    0 讨论(0)
  • 2021-01-13 07:39

    var_export creates the PHP code, which you can run through the eval.

    But I wonder, what is your idea?

    0 讨论(0)
  • 2021-01-13 07:44

    Maybe you’re looking for var_export that will give you a valid PHP expression of the passed value.

    0 讨论(0)
  • 2021-01-13 07:46

    Use var_export if you want a representation which is also valid PHP code

    $a = array (1, 2, array ("a", "b", "c"));
    $dump=var_export($a, true);
    echo $dump;
    

    will display

    array (
     0 => 1,
     1 => 2,
     2 => 
     array (
       0 => 'a',
       1 => 'b',
       2 => 'c',
     ),
    )
    

    To turn that back into an array, you can use eval, e.g.

    eval("\$foo=$dump;");
    var_dump($foo);
    

    Not sure why you would want to do this though. If you want to store a PHP data structure somewhere and then recreate it later, check out serialize() and unserialize() which are more suited to this task.

    0 讨论(0)
  • 2021-01-13 07:53

    I had a similar problem : a long runing script produced at the end a vardump of large array. I had to parse it back somehow for further analyzis. My solution was like this:

    cat log.stats  | 
      sed 's/\[//g' | 
      sed 's/\]//g' | 
      sed -r 's/int\(([0-9]+)\)/\1,/g' | 
      sed 's/\}/\),/g' | 
      sed -r 's/array\([0-9]+\) \{/array(/g' > 
      log.stats.php
    
    0 讨论(0)
提交回复
热议问题