0

I have a array that I am writing to a file using var_export(). I reload the array every time the script starts. However, whenever I try to reference a variable inside the array it returns 'a', I can do a print_r() and see the array just fine, I just can not access the variable I want. Here is the saved output:

array (
  'timestamp' => '1283882964',
  'files_submitted' => 2943,
  'errors' => array (
                     '/WebFS/xx.doc' => array (
                                                                                                                                                         'STATUS' => 400,
                                                                                                                                                  ),
                     'WebFS/xx.doc.doc' => array (
                                                                                                                                                                  'STATUS' => 400,
                                                                                                                                                            ),
              )
)

Here is the code I use to save:

function add_log_entry($filename,$return_arr) {
        //$timestamp = strval(mktime());
        $return_arr['timestamp'] = mktime();
        $return_str = var_export($return_arr,true);
        return file_put_contents($filename, $return_str);
}

Here is the code I use to recall the array:

function get_log_entry($filename) {

        $var_str = file_get_contents($filename);
        eval("\$return_var = \$var_str;");
        die($return_var['timestamp']);
        return $return_var;
}

You can see I put the die() in the recall code and this is where the 'a' is coming from.

Thanks to whom ever responds.

Ben

1
  • 1
    Why do you use an array you cannot refer to? Ever considered to use a less complex (for you) structure? Commented Sep 7, 2010 at 20:38

1 Answer 1

2

use the php functions serialize and unserialize, no need to write your own hacks using var_export and eval (apart from the security implications)

example code:

 file_put_contents($filename, serialize($array));
 $array = unserialize(file_get_contents($filename));

Using serialize/unserialize might impose a security risk. To serialize simple arrays/data structures it's better to use the json_encode function:

 file_put_contents($filename, json_encode($array));
 $array = json_decode(file_get_contents($filename), TRUE);
Sign up to request clarification or add additional context in comments.

1 Comment

This answer is old and outdated. unserialize might impose security risks. If you just need to serialize an array, better use json_decode

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.