I have An array which looks like following after using print_r
Array ( [0] => Array ( [0] => piklu [name] => piklu ) [1] => Array ( [0] => arindam [name] => arindam ) [2] => Array ( [0] => shyamal [name] => shyamal ) [3] => Array ( [0] => arko [name] => arko ) [4] => Array ( [0] => pamela [name] => pamela ) [5] => Array ( [0] => dodo [name] => dodo ) [6] => Array ( [0] => tanmoy [name] => tanmoy ) [7] => Array ( [0] => jitu [name] => jitu ) [8] => Array ( [0] => ajgar [name] => ajgar ) )
Now I want to write this array direct to a file, I use the file_put_contents
method, but I don't know how to get the data from the file exactly how they looks like original. Any idea to solve this?
If this is static content, a more performant way to do this would be:
$filePath = 'path/to/file.php';
//Saving
file_put_contents($filePath, '<?php '.PHP_EOL.'return '.var_export($array, true).';');
//Retrieving data
$array = include $filePath;
This will also be saved in OPcode cache and can even be pre-loaded. However, if you use OPcode cache or pre-loading this will not reload between deploys.
Your problem at the moment is basically that you're only able to write strings into a file. So in order to use file_put_contents
you first need to convert your data to a string.
For this specific use case there is a function called serialize which converts any PHP data type into a string (except resources).
Here an example how to use this.
$string_data = serialize($array);
file_put_contents("your-file.txt", $string_data);
You probably also want to extract your data later on. Simply use unserialize to convert the string data from the file back to an array.
This is how you do it:
$string_data = file_get_contents("your-file.txt");
$array = unserialize($string_data);
Here are two ways:
(1) Write a JSON representation of the array object to the file.
$arr = array( [...] );
file_put_contents( 'data.txt', json_encode( $arr ) );
Then later...
$data = file_get_contents( 'data.txt' );
$arr = json_decode( $data, true );
(2) Write a serialized representation of the array object to the file.
$arr = array( [...] );
file_put_contents( 'data.txt', serialize( $arr ) );
Then later...
$data = file_get_contents( 'data.txt' );
$arr = unserialize( $data );
I prefer JSON method, because it doesn't corrupt as easily as serialize. You can open up the data file and make edits to the contents, and it will encode/decode back without big headaches. Serialized data cannot be changed so easily or corrupted, or unserialize() won't work. Each variable is defined by type and length, and these values must be updated along with the actual change you are making.
file_put_contents writes a string to a file, not an array. http://php.net/manual/en/function.file-put-contents.php
If you'd like to write what you see there in that print_r to a file, you can try this:
ob_start();
print_r($myarray);
$output = ob_get_clean();
file_put_contents("myfile.txt",$output);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With